如何通过 TestFlight 测试 Facebook Audience Network 广告?

How to test Facebook Audience Network ads over TestFlight?

我正在尝试将 Audience Network 集成到我的应用程序中。当我在 XCode.

上部署时,广告在模拟器和设备上正常工作

我想通过 TestFlight 分发构建以确保它可以在发布模式下工作。当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook returns "No fill" 用于广告。广告也不会出现在 TestFlight 构建中。

对于在 TestFlight 构建中显示设备广告有什么想法吗?

这可能有两个主要原因。首先,用户或测试人员无法登录设备上的原生 Facebook 应用程序。这可能会导致 Error 1001 - No Fill Rate.

1001 - No Fill

This is a common error seen while testing, and relates to a "No Fill" response; the most common reason for this is the user is not logged in to the Native Facebook App on a Test Device.

Server Response SDK Documentation Code=1001 “No Fill” Error 1001 - No Fill. Maybe due to one or more of the following:

  • User not logged into the Native Facebook App on Mobile Device
  • Limit Ad Tracking turned on (iOS)
  • No Ad Inventory for current user
  • Your testing device must have the native Facebook application installed.
  • Your application should attempt to make another request after 30 seconds.

这就是 documentation 告诉您的 1001 错误。

其次,您可能仍处于调试模式,因此在发布模式下看不到广告。要修复此错误,请从 Apple 开发人员中心下载最新的配置文件并将 Facebook 应用程序切换为已发布。您可以通过登录 Facebook 开发者控制台并 select 运行您的应用来做到这一点。然后在左侧您应该有此列,您可以在其中 select STATUS & REVIEW 然后,切换“你想制作这个应用程序 public 吗?”切换到是。 这将使您的应用程序可供任何人使用,这意味着广告将与您的所有测试人员一起弹出。

根据我在这里的经验,我的两分钱是您没有制作应用程序 public 或者没有将用户添加为 Beta 测试人员。因此 facebook 无法投放任何抛出 1001 错误的广告。通过制作应用 public 并让您的测试人员通过 Facebook 应用登录,这应该是一个快速解决方案。我在 Facebook SDK 的另一部分遇到了类似的问题,该问题已由 public 版本修复。

希望对你有所帮助,朱利安

在应用上述解决方案后,我仍然面临同样的问题。我已经通过添加 deviceHashId:-

解决了
FBNativeAd *nativeAd;
static NSString *adPlacementId = @"xxxxxxxxx";

- (void)showNativeAd:(UIViewController *)vc
{
  nativeAd = [[FBNativeAd alloc] initWithPlacementID:adPlacementId];
  nativeAd.delegate = self;

  NSLog(@"isTestMode1: %d",[FBAdSettings isTestMode]);
  NSString *testDeviceKey = [FBAdSettings testDeviceHash];
  if (testDeviceKey) {
    [FBAdSettings addTestDevice:testDeviceKey];
  }
  [nativeAd loadAd];
}

我有一些不同的问题如果有人有任何问题请回复this stack overflow link

Error 1001 - No Fill Rate.

如果您想测试真实广告,请尝试以下步骤:

  1. 登录 Facebook 应用程序
  2. 打开 Safari
  3. 在 google "macbook air buy" 上查找,打开任何商店,将 macbook 添加到购物车
  4. 打开 Facebook 应用程序,下拉刷新 Facebook 历史记录
  5. 打开您的应用程序
  6. 使用不同的搜索词重复步骤 2-5,直到广告出现在您的应用中

对于我们的测试设备,它几乎每次都能正常工作。

如果您在很多地方都有广告,您可以将此代码放入 AppDelegate

Swift 3

import FBAudienceNetwork

private func facebookAdsControl() {
    #if RELEASE
         self.clearTestDevicesForFacebookAds()
    #else
         self.addTestDevicesForFacebookAds()
    #endif
}

///remove for live mode
private func addTestDevicesForFacebookAds(){
    let key = FBAdSettings.testDeviceHash()
    FBAdSettings.setLogLevel(FBAdLogLevel.Log)
    FBAdSettings.addTestDevice(key)
}

///add for live mode
private func clearTestDevicesForFacebookAds() {
    FBAdSettings.clearTestDevices()
}

此代码将确保您的测试广告在 testflight 或 simulator/device 上展示,还将确保当您发布到应用商店时,您的广告将作为实时广告展示,并且测试设备将被清除。

在 didFinishLaunchingWithOptions

中调用:facebookAdsControl()

您也可以在有广告的代码中调用此代码,但请确保在 adView.load()

之前调用它

为了使用宏,您必须将标志添加到构建设置中的 Swift 标志中

我希望这对某人有所帮助,因为我发现 Facebook 文档不是很清楚。