测试 Audience Network 集成

将 Facebook Audience Network 集成到移动网站或应用中时,应在集成功能正式使用之前,在物理设备上使用实际投放的广告测试集成情况。请在集成过程中使用最新的 Audience Network SDK,因为其中包含了最新推出的漏洞补丁和功能改善。以下内容将分步说明如何测试 Audience Network 广告与应用或移动网站集成的情况。

第 1 步:使用实际投放的广告测试

第 2 步:检查实际投放的广告的请求错误代码

第 3 步:使用 Audience Network 请求调试器诊断广告请求

第 4 步:使用测试广告执行测试

第 5 步:Audience Network 广告集成检查清单

第 1 步:使用实际投放的广告测试

使用实际投放的广告执行测试的过程分为两步。第一步是在商务管理平台设置页面添加用户,让这些用户能够在应用通过审核前看到实际投放的广告。第二步是让指定的测试用户在登录 Facebook 的状态下使用受测试的应用或移动网站。

将测试用户添加到应用

您必须将测试用户添加到 Facebook 应用(无论分配哪种用户身份),以便使用实际投放的广告在物理设备上测试您的应用或移动网站。以下是将测试用户添加到应用的推荐方法:

  1. 前往商务管理平台设置
  2. 点击左侧的用户选项卡中的 + 添加
  3. 输入您想要添加至商务管理平台帐户的人员的邮箱。可在此处输入多名用户。
  4. 您可以为他们分配身份,或点击跳过,仅将他们添加到商务管理平台帐户中。

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

测试移动应用

  1. 使用首选分发方法将应用分发到测试用户的设备,并确保将测试用户添加到商务管理平台设置页面。
  2. 添加的每个用户都需要在其设备上安装 Facebook 应用,并使用添加为“测试用户”身份的 Facebook 用户编号登录。这是必须执行的步骤,因为 Facebook 必须识别出用户确实被添加到您的商务管理平台中,才能返回广告。
  3. 测试用户现在可以启动应用,并触发要测试的版位。他们应该能看到实际投放的广告。

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

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

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



第 2 步:检查实际投放的广告的请求错误代码

测试 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 分钟后尝试再次发出请求。我们还建议调整刷新率或请求率。

1011 - Display Format Mismatch

服务器响应 SDK 文档

Code=1011 “Display Format Mismatch”

  • Error 1011 - Display Format Mismatch 原因如下:
  • 广告请求中的显示格式与为此版位制定的显示格式不一致。
  • 每个版位只能使用一种显示格式。
  • 您可以创建多个版位来使用不同的显示格式。

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 提交漏洞报告。


第 3 步:使用 Audience Network 请求调试器诊断广告请求

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

  1. 前往创收管理工具
  2. 点击管理资产
  3. 点击右上方的资产设置 > 请求调试工具
  4. 点击开始,开始监控您的应用或网站发送的请求。

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

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

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

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

  1. 确保您使用的是实体设备而非模拟器
  2. 确保您的测试设备上安装了 Facebook 应用
  3. 确保在测试设备中登录 Facebook 的测试用户在您的商务管理平台中也拥有用户身份
  4. 如果使用中介,确保中介层级会向 Facebook Audience Network 发送请求


第 4 步:使用测试广告执行测试

您应确保在应用的商务管理平台中为测试应用的用户指定一个用户身份。这是推荐的测试方法,因为您可以在实体设备上看到实际投放的广告。要详细了解推荐的测试方法,请参阅使用实际投放的广告执行测试部分。

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

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

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

测试广告类型表

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

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 秒且包含链接行动号召按钮的高清视频广告

插屏广告、奖励式视频广告、原生广告

IMG_16_9_APP_INSTALL

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

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

IMG_16_9_LINK

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

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

CAROUSEL_IMG_SQUARE_APP_INSTALL

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

插屏广告、原生广告

CAROUSEL_IMG_SQUARE_LINK

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

插屏广告、原生广告

使用测试广告类型测试广告版位时,请注意支持的广告格式。例如,如果创建奖励式视频广告实例来请求测试广告类型为 IMG_16_9_APP_INSTALL 的广告,系统会出现显示错误

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

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

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

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

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

#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 替换为上述日志中显示的测试模式设备哈希编号。

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

[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 且具有应用安装行动号召按钮的视频测试广告。



第 5 步:Audience Network 广告集成检查清单

  1. 在测试设备上安装并登录 Facebook 应用。
  2. 向商务管理平台帐户添加测试 Audience Network 广告的用户。
  3. 确保使用在商务管理平台中创建的版位编号初始化广告实例。 请参阅入门步骤
  4. 检查应用是否成功请求了实际投放的 Audience Network 广告。使用 Audience Network 错误代码Audience Network 请求调试器进行诊断。
  5. 检查广告是否在应用中完整、清晰地展示给用户。
  6. 使用测试广告检查广告集成的用户体验。确保在将应用发布到应用商店前删除测试广告代码片段,否则生产版应用中只会展示测试广告。