0

我正在使用最新的Facebook Audience Network Android SDK在我的应用中请求原生广告。很多时候,当我们渲染广告时,它会显示一个纯空白的绿松石色/绿色图像。

从 SDK 返回的示例 URL(链接可能很快就会失效):

https://www.facebook.com/adnw_creative?u1=https://external.xx.fbcdn.net/safe_image.php?d=AQCNTQau5nEI97JV&w=400&h=400&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQKuuUwxdpWnJD4IuVU5K7-dGtdpWvTMkkcn8An7JTLMP1uGH8-5hr3r0Qxlw7uKt-Daa8U2FJ11odkIHEh7Ov506EldRlGwnGO8D2z7Y5SbNg7uLC5PiMOID0g6Jxa9ZqPqmgdGRZFhfRXcAK4XXu-h&cfs=1&ext=jpg&w1=400&h1=400&u2=https://external.xx.fbcdn.net/safe_image.php?d=AQBVQQYgyM2PGHkl&w=400&h=400&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQIV9UKQ9Tr1kQ3DDHhoRHMJFyAdfC0P_yEeDxw283SgyGNnVCcU0KylESx5DdC46BC8SYmXafctY15OOW41B_rnKKL2CZKGjqVe5QdKJddBb2iWJwdd1rdoLUaRo0DeMkC785yfI89iPJHtm9ng9nxo&cfs=1&ext=jpg&w2=400&h2=400

图片(630 x 315px,忽略我们渲染的“赞助”文字):

在此处输入图像描述

我已经在我的笔记本电脑上尝试了该链接,它给出了相同的结果。URL 有两个级别的重定向:

https://www.facebook.com/adnw_creative
    ?u1=https://external.xx.fbcdn.net/safe_image.php
        ?url=https%3A%2F%2Fwww.facebook.com%2Fads...
    &u2=https://external.xx.fbcdn.net/safe_image.php
        ?url=https%3A%2F%2Fwww.facebook.com%2Fads...

此 URL 中的两个safe_image.php链接都有效,例如

网址:

https://external.xx.fbcdn.net/safe_image.php?d=AQCNTQau5nEI97JV&w=400&h=400&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQKuuUwxdpWnJD4IuVU5K7-dGtdpWvTMkkcn8An7JTLMP1uGH8-5hr3r0Qxlw7uKt-Daa8U2FJ11odkIHEh7Ov506EldRlGwnGO8D2z7Y5SbNg7uLC5PiMOID0g6Jxa9ZqPqmgdGRZFhfRXcAK4XXu-h&cfs=1&ext=jpg&w1=400&h1=400

图片(315 x 315 像素):

在此处输入图像描述

这证明顶级adnw_creativeURL 出了问题。看起来它应该将两个 315 x 315 像素的图像拼接成一个 630 x 315 像素的图像,但是失败了。

搜索类似的 问题,人们在 safe_image.php 中遇到了 URL 编码和方案 (http/https) 问题,但这是一个不同的问题。

关于可靠地获得体面图像的任何想法?提前致谢。

4

1 回答 1

1

为了回答我自己的问题,第三方 Cordova 插件破坏了 Facebook URL 编码,该插件在通过 webView.loadUrl() 从 Android 传递到 JavaScript 之前没有对其进行 URL 编码。

修复建议here

我通过使用Charles来调试问题,以查看 Facebook SDK 实际检索的内容。

于 2016-02-05T10:38:33.170 回答