15

我正在尝试将 Audience Network 集成到我的应用程序中。当我通过 XCode 部署时,广告在模拟器和设备上正常工作。

我想通过 TestFlight 分发构建以确保它可以在发布模式下工作。当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook 为广告返回“无填充”。广告也不会出现在 TestFlight 构建中。

对在 TestFlight 版本中展示设备广告有任何想法吗?

4

4 回答 4

6

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

1001 - 无填充

这是测试时常见的错误,与“No Fill”响应有关;最常见的原因是用户未在测试设备上登录本机 Facebook 应用程序。

服务器响应 SDK 文档代码 = 1001 “无填充” 错误 1001 - 无填充。可能是由于以下一项或多项原因:

  • 用户未在移动设备上登录本机 Facebook 应用程序
  • 启用限制广告跟踪 (iOS)
  • 当前用户没有广告资源
  • 您的测试设备必须安装本机 Facebook 应用程序。
  • 您的应用程序应在 30 秒后尝试发出另一个请求。

这是文档告诉您的 1001 错误。

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

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

希望有帮助,朱利安

于 2015-12-05T20:00:16.593 回答
2

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

斯威夫特 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 或模拟器/设备上显示,并且还将确保当您发布到应用商店时,您的广告将显示为 LIVE 广告,并且测试设备将被清除。

调用:facebookAdsControl()在 didFinishLaunchingWithOptions

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

为了使用宏,您必须在 Build Settings 中将标志添加到您的 Swift Flags

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

于 2017-07-13T13:46:40.113 回答
0

应用上述解决方案后,我仍然面临同样的问题。我通过添加 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];
}

如果有人有任何意见,我有一些不同的问题,请回复此堆栈溢出链接

于 2016-12-12T10:41:10.127 回答
-2

错误 1001 - 无填充率。

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

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

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

于 2017-03-15T11:15:24.047 回答