Android Facebook广告SDK Audience Network集成攻略:Facebook广告SDK踩坑之旅

5,586 阅读4分钟

最近笔者需要为一款海外 APP 集成 Facebook 广告 SDK,本来想着集成 SDK 这么简单的事情,又是 Facebook 这样的大厂,有示例有文档,应该再简单不过了。没想到,集成过程中还是踩了不少坑,而且网上提到的有效的解决办法极少,所以这里笔者将集成时遇到的坑和解决过程分享出来。

一、Facebook Audience Network SDK 集成简述

Facebook Audience Network SDK 的开发文档十分详细,整个集成过程和对于各种类型的广告介绍比较全面,而且有提供对应的 Demo,对于开发者将 SDK 集成到 APP 中,十分友好。 但是,集成时还是有几个需要注意的点,主要是在调试广告展示这一阶段。 具体的广告集成参考文档和 Demo 一般都可以顺利集成,这里就不多讲。下面我分享一下集成过程中几个阻塞集成进度的坑。以下内容主要针对 Android 设备,当然 iOS 集成时也可以参考。

二、集成 Facebook Audience Network SDK 的踩坑之旅

1. 测试广告显示需要安装 Facebook APP 和 Google Play 商店

Facebook 的广告需要展示广告的手机上安装有 Facebook 和 Google Play 商店的应用,并且登陆 Facebook 帐号,才能在集成广告 SDK 的 APP 上展示 Facebook 广告。所以,无法展示 Facebook 广告的小伙伴,可以先查看一下手机上有没有安装 Facebook 的 APP。

2. 测试广告时使用具有一定活跃度的 Facebook 帐号

如果在测试广告时,你在 Facebook 的 APP 上登陆的是一个新的帐号,那么有极大可能无法显示广告。这是因为 Facebook 不知道新用户的广告兴趣,所以不会对没有活跃度的用户推送广告内容。

测试广告显示有好几种方式,不同方式的广告显示有不同的特点。笔者做了总结,在下面归为一个大点来写。

三、测试广告展示的几种方式

1. 客户端插入测试代码的方式

这一种方法需要已经在 Facebook Audience Network 申请了广告版本,拿到 Placement Id。通过这种方式需要根据改动修改客户端的代码,所以不是很方便,但是快捷。重要的是,这种方式只能看到 Facebook 的测试用的广告。

a. AdSettings.addTestDevice(String deviceIdHash)

在广告展示前添加 AdSettings.addTestDevice(String deviceIdHash)这段代码,广告 SDK 会通过 Placement Id 设置的广告类型返回测试用广告。那么这个 deviceIdHash 从哪里来呢?在未添加这段代码前展示广告,在 log 中会显示

When testing your app with Facebook's ad units you must specify the device hashed ID to ensure the delivery of test ads, add the following code before loading an ad: AdSettings.addTestDevice("caa50f99-1852-4e4d-a730-160ea59e4d1b");

只要将log中的代码 AdSettings.addTestDevice("caa50f99-1852-4e4d-a730-160ea59e4d1b") 复制粘贴即可。

b. TEST_AD_TYPE

在你的 Placement Id 前添加测试广告类型,格式为 TEST_AD_TYPE#YOUR_PLACEMENT_ID。Fackbook 提供了11种测试广告类型,这个可以自行在官方文档中查找。这种方式也只会返回测试用的广告。

2. 后台控制的方式 上面提到的方式只能显示测试用的广告,但如果想获取真实的广告进行测试的话,就需要用到下面两种方式。

a. 添加测试设备 AAID

AAID,即 Google Advertising ID,是谷歌用于标识用户的广告 ID。通过这种方式,可以获取真实的广告数据。 但是在调试的时候会发现,展示的广告并不受在广告控制台中的设置的限制,例如在控制台设置仅显示原生视频广告,实际返回广告内容时还会包含轮播广告和图文广告。所以,这种方式获取的广告不受控制台的设置限制,如果想要获取特定条件的广告,还需要下面这种方式。

b. 将 Facebook 帐户添加为测试帐户

在后台中将 Facebook 帐户添加为测试帐户,并在手机的 Fackbook APP 上登陆该帐户,便可以根据控制台设置获取想要的广告内容。 不过,这种方式在 Android 设备上有个隐藏的坑。在一顿操作后,你会发现 APP 上获取广告时返回1001的状态码,No Fill 的状态信息,意思是该广告位未填写。 从头到尾检查后发现帐户是有活跃的帐户,各种配置没问题,就是显示不出广告。这时候,需要退出 Facebook 帐户,前往设置重置 AAID,再登陆 Facebook。通过这一步骤,再请求时就可以收到广告。如果操作一次不可行的话,需要这样多重复几次。

三、总结

以上是笔者在集成 Facebook 广告 SDK 时遇到的问题,主要集中在调试广告显示在这一方面,可能会对刚集成 Facebook 广告 SDK 的小伙伴比较有帮助。