Facebook Audience Network

 
 
 

测试 Audience Network 集成

将 Facebook Audience Network 集成到移动网站或应用中时,应在进入生产阶段前,在真实设备上使用真实广告测试集成的情况。请务必在集成中使用最新的 Audience Network SDK,因为其中包含了最新推出的漏洞补丁和功能改善。以下内容说明如何测试您的应用和网站。

在 iOS 或 Android 模拟器上运行时,可启用测试模式并指定设备散列编号,以便显示测试广告。这对于测试集成是不错的开始。我们还建议根据以下指南,使用真实广告在真实设备上执行测试。

1.使用真实广告执行测试

2.真实广告请求的错误代码

3.使用测试广告执行测试

使用 Audience Network 请求调试器测试请求

在应用中实施版位后,您可以使用 Audience Network 请求调试器这款工具,验证 Facebook 是否收到您的应用发送的请求。

在开发者面板的“Audience Netword”版块: https://developers.facebook.com/apps/<your_app_id>/audience-network/

在左侧面板的“Audience Network”下方,点击“应用”版块,向下滚动可看到“Audience Network 请求调试器”。点击 Start 按钮后,工具将开始监测您的应用发送的请求,让您掌握相关情况。

在您的 iOS 或 Android 实体测试设备中,浏览您的应用以触发 Audience Network 广告版位,而广告请求将会显示到工具中。请核实发送的请求附带有正确的版位编号、捆绑包名称等等。

这要求使用实体设备,无法使用 iOS 模拟器或 Android 模拟器实现

您需要在使用的同一测试设备登录 Facebook 应用,工具才能成功监测。

如果广告请求没有显示到工具中,则表示 Facebook 没有根据预期收到请求。您可以检查如下各项来排除故障:

  1. 确保您使用了实体设备而非模拟器
  2. 确保您的测试设备上安装了 Facebook 应用
  3. 确保您在测试设备上登录了 Facebook,且登录用户是 Facebook Audience Network 应用的管理员、开发者或测试者
  4. 如果使用中介,确保中介层会向 Facebook Audience Network 发送请求。

使用真实广告执行测试

使用真实广告执行测试的过程分为两步。第一步是在应用设置中添加测试者,让测试者能够在应用通过审核前看到真实广告。第二步是让这些测试者在登录 Facebook 的状态下使用受测试的应用或移动网站。下面详细介绍如何执行这两个步骤。

将测试者添加到应用

您必须将测试者添加到 Facebook 应用(无论是任何身份),以便使用真实广告在真实设备上测试您的应用或移动网站。以下是将测试者添加到应用的推荐方法:

  1. 前往应用面板,点击左侧的“用户身份”选项卡。
  2. 在“测试者”版块,点击“添加测试者”按钮。可参与测试的用户还可以是“管理员”或“开发者”身份。我们建议为需要参与应用或网站测试,但不需要在 Facebook 查看其设置的用户选择“测试者”身份。
  3. 输入想要添加为测试者的用户的姓名、Facebook 编号或帐号,然后单击“提交”。可在此处输入多名用户。
  4. 现在您应该能看到作为测试者输入的用户。

如果使用任何中介层,请确保中介层向 Audience Network 发送请求。如果在中介层启用测试功能,它可能不会向 Facebook 服务器发送任何请求。

测试移动应用

  1. 使用首选分发方法将应用分发到测试者的设备。
  2. 添加的每名测试者都需要在其设备上安装 Facebook 应用,并使用添加为“测试者”身份的 Facebook 用户编号登录。提出此要求的原因在于,Facebook 需要在应用上将用户识别为“测试者”,这样才能在不考虑应用审核状态的情况下返回广告。
  3. 测试者现在可以启动应用,执行所需的步骤来触发要测试的版位。他们应该能看到真实广告。

测试广告版位时,Facebook 会针对约 20% 的请求故意发送“no-fill”(无填充),以便测试应用或移动网站如何处理无填充的情况。

真实广告请求的错误代码

测试 Facebook Audience Network 的集成时,可能会在发出请求时遇到其中一个可能出现的错误代码。这些错误代码如下所述。

1000 - Network Error

服务器响应 SDK 文档

Code=1000 “Network Error"

  • Error 1000 - Network Error。Audience Network SDK 无法访问 facebook.com (http://facebook.com/)
  • 应用应尝试再次发出请求,直到可以访问网络。我们建议发出增量请求,直到重新建立连接或声明超时。

1001 - No Fill

这是测试时的常见错误,与“No Fill”响应相关;最常见的原因是用户在测试移动应用时未登录 Facebook 应用,或用户在测试移动网站时未登录 Facebook 移动网站。

服务器响应 SDK 文档

Code=1001 “No Fill”

  • Error 1001 - No Fill。可能由以下一个或多个原因导致:
  • 用户未在移动设备上登录原生 Facebook 应用
  • 打开了“限制广告跟踪”(iOS)
  • 打开了“退订以兴趣为依据的广告”(Android)
  • 当前用户无广告库存
  • 测试设备必须安装原生 Facebook 应用
  • 应用应在 30 秒后尝试再次发出请求。

1002 - Ad Load Too Frequently

服务器响应 SDK 文档

Code=1002 “Load Too Frequently”

  • 广告请求基于以下要素的组合:
  • 设备编号
  • 版位编号
  • 显示格式(横幅、插屏、原生)
  • 应用应在 30 分钟后尝试再次发出请求。我们还建议调整刷新率或请求率。

1203 - Not An App Admin, Developer or Tester

服务器响应 SDK 文档

Code=1203 “Not An App Admin, Developer or Tester”

  • 捆绑包的初始请求必须来自应用的管理员、开发者或测试者。

2000 - Server Error

服务器响应 SDK 文档

Code=2000 “Server Error"

  • Error 2000 - Server Error。可能原因包括:
  • 版位编号无效:每个版位和类型都有唯一的编号
  • SDK 版本不受支持或过期:请下载最新版本,或更新 Pod(如果使用 Cocoa Pod)
  • 错误调用/使用 loadAd 方法。我们建议在 loadAd 及任何关联的方法/回调上放置断点
  • 应用应在 30 秒后尝试再次发出请求。

2001 - Internal Error

服务器响应 SDK 文档

Code=2001 “Internal Error”

  • Error 2001 - Internal Error。 Audience Network SDK 无法处理来自 facebook.com 的响应
  • 应用应在 30 秒后尝试再次发出请求。
  • 如果问题持续出现,请向 Facebook 提交漏洞报告。

使用测试广告执行测试

您应确保在 Facebook 应用面板中为应用测试用户指定一个用户身份。这是推荐的测试方法,因为您可以在真实设备上看到真实广告。要详细了解推荐的测试方法,请参阅使用真实广告执行测试部分。

但正如在前面的章节提到的一样,您可能会发现有时候无法使用应用的用户界面视图测试真实广告的展示效果,此外,您无法保证应用收到的广告一定是图片广告、视频广告或轮播广告。请求真实广告不会保证返回的广告内容和格式。如果想要使用包含纵向视频内容的广告执行测试,以确保广告的展示效果符合应用的用户界面视图,该怎么做?

要请求测试广告,您需要在初始化所有 Facebook 广告对象时,使用以下测试广告类型字符串将版位编号与“#”串联。用于请求测试广告的版位编号模板为 TEST_AD_TYPE#YOUR_PLACEMENT_ID。

测试广告类型表

测试广告类型 说明 支持的广告格式

IMG_16_9_APP_INSTALL

宽高比为 16x9 且包含应用安装行动号召按钮的图片广告

横幅广告、插屏广告、原生广告

IMG_16_9_LINK

宽高比为 16x9 且包含链接行动号召按钮的图片广告

横幅广告、插屏广告、原生广告

VID_HD_16_9_46S_APP_INSTALL

宽高比为 16x9、时长为 46 秒且包含应用安装行动号召按钮的高清视频广告

插屏广告、原生广告

VID_HD_16_9_46S_LINK

宽高比为 16x9、时长为 46 秒且包含链接行动号召按钮的高清视频广告

插屏广告、原生广告

VID_HD_16_9_15S_APP_INSTALL

宽高比为 16x9、时长为 15 秒且包含应用安装行动号召按钮的高清视频广告

插屏广告、原生广告

VID_HD_16_9_15S_LINK

宽高比为 16x9、时长为 15 秒且包含链接行动号召按钮的高清视频广告

插屏广告、原生广告

VID_HD_9_16_39S_APP_INSTALL

宽高比为 9x16、时长为 39 秒且包含应用安装行动号召按钮的高清视频广告

插屏广告、原生广告

VID_HD_9_16_39S_LINK

宽高比为 9x16、时长为 39 秒且包含链接行动号召按钮的高清视频广告

插屏广告、原生广告

CAROUSEL_IMG_SQUARE_APP_INSTALL

包含正方形图片和应用安装行动号召按钮的轮播广告

插屏广告、原生广告

CAROUSEL_IMG_SQUARE_LINK

包含正方形图片和链接行动号召按钮的轮播广告

插屏广告、原生广告

在 iOS 设备上使用代码请求测试广告的示例

使用 Testflight 分发和测试应用时,您不会在这些测试版本中看见真实的广告。相反,您需要设置测试模式(如下所示),才能从 Audience Network 中获取广告。 使用 Testflight 分发的应用每次请求广告标识符 (IDFA) 时,都会获得不同的 IDFA。 正常情况下,一个设备的 IDFA 会保持不变,除非用户手动重置。 但当 Testflight 版本请求操作系统提供 IDFA 时,不会获得“真实”的 IDFA。相反,会获得一个“虚拟”的 IDFA,且每次请求时获得的 IDFA 都不一样。

为解决这一问题,您可以开启测试模式,允许展示测试广告。

例如,要在 iOS 应用中请求宽高比为 9:16 且具有应用安装行动号召按钮的视频测试广告,您需要添加以下代码行来初始化 FBNativeAd 对象:

[FBNativeAd *nativeAd = [[FBNativeAd alloc] initWithPlacementID:@"VID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_ID"];

您可以运行上述代码,在 Audience Network SDK 示例文件夹的 NativeAdSample 项目中请求测试广告。

或者,如果您需要请求具有随机内容格式的测试广告,您可以在加载广告请求前添加以下代码行:

#ifdef DEBUG
[FBAdSettings setLogLevel:FBAdLogLevelLog];
[FBAdSettings addTestDevice:@"HASHED_ID"];
#endif

您会看到以下日志消息:

[FBAudienceNetworkLog/FBAdSettings:94] 
When testing your app with Facebook ad units,  
you must specify the device hashed ID to ensure the delivery of test ads, 
add the following code before loading an ad: `[FBAdSettings addTestDevice:@"HASHED_ID"]`
Test mode device hash: bd675f960298a92003630d76fa612b1706b745ab

HASHED_ID 替换为上述日志中显示的测试模式设备哈希编号。

千万不要通过上面的测试代码将应用设置为“公开”状态,因为这样会导致只显示测试广告。相反,您应该使用 DEBUGTESTING 之类的预处理程序宏,然后使用 #ifdef 区分测试版本和发布版本。

完成测试后,您应该使用下列代码行清除测试设备的设置:

[FBAdSettings clearTestDevice:[FBAdSettings testDeviceHash]]; 

在 Android 设备上使用代码请求测试广告的示例

要在 Android 应用中请求宽高比为 9:16 且具有应用安装行动号召按钮的视频测试广告,您需要添加以下代码行来初始化 NativeAd 对象:

nativeAd = new NativeAd(this, "VID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_ID");

或者,如果您需要请求具有随机内容格式的测试广告,则在真实 Android 设备上执行测试时,您会看到 Logcat 中显示如下所示的消息:

Log:Test mode device hash:HASHED_ID 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("HASHED ID");

您可以在加载广告前添加以下代码行,在设备上启用测试广告:

AdSettings.addTestDevice("HASHED ID");

如果想要添加多台测试设备,只需创建一个字符串列表,添加到加载广告前的位置:

List<String> testDevices = new ArrayList<>();
testDevices.add("HASHED_ID_1");
testDevices.add("HASHED_ID_2");
AdSettings.addTestDevices(testDevices);

完成测试后,您应该使用下列代码行清除测试设备的设置:

AdSettings.clearTestDevices();

在中介面板中请求测试广告的示例

除通过代码请求测试广告外,如果您的应用使用中介,您还可通过中介面板配置测试广告类型和版位编号值。 例如,如果您的应用使用 MoPub,您可编辑 Facebook 网络并将原生广告的版位编号值设置为 VID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_ID。 您的应用会收到宽高比为 9:16 且具有应用安装行动号召按钮的视频测试广告。