我正在尝试将 Audience Network 集成到我的应用程序中。当我通过 XCode 部署时,广告在模拟器和设备上正常工作。
我想通过 TestFlight 分发构建以确保它可以在发布模式下工作。当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook 为广告返回“无填充”。广告也不会出现在 TestFlight 构建中。
对在 TestFlight 版本中展示设备广告有任何想法吗?
我正在尝试将 Audience Network 集成到我的应用程序中。当我通过 XCode 部署时,广告在模拟器和设备上正常工作。
我想通过 TestFlight 分发构建以确保它可以在发布模式下工作。当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook 为广告返回“无填充”。广告也不会出现在 TestFlight 构建中。
对在 TestFlight 版本中展示设备广告有任何想法吗?
这可能有两个主要原因。首先,用户或测试人员无法在设备上登录本机 Facebook 应用程序。这可能会导致Error 1001 - No Fill Rate
.
1001 - 无填充
这是测试时常见的错误,与“No Fill”响应有关;最常见的原因是用户未在测试设备上登录本机 Facebook 应用程序。
服务器响应 SDK 文档代码 = 1001 “无填充” 错误 1001 - 无填充。可能是由于以下一项或多项原因:
- 用户未在移动设备上登录本机 Facebook 应用程序
- 启用限制广告跟踪 (iOS)
- 当前用户没有广告资源
- 您的测试设备必须安装本机 Facebook 应用程序。
- 您的应用程序应在 30 秒后尝试发出另一个请求。
这是文档告诉您的 1001 错误。
其次,您可能仍处于调试模式,因此在发布模式下看不到广告。要修复此错误,请从 Apple 开发人员中心下载最新的配置文件并将 Facebook 应用程序切换为已发布。您可以通过登录 Facebook 开发者控制台并选择您的应用程序来做到这一点。然后在左侧,您应该有此列,您可以在其中选择STATUS & REVIEW。
然后,切换“你想公开这个应用吗?” 切换到是。
这将使您的应用程序可供任何人使用,这意味着您的所有测试人员都会弹出广告。
根据我的经验,我的两分钱是您没有公开您的应用程序或没有将用户添加为 beta 测试人员。因此,facebook 无法投放任何引发 1001 错误的广告。通过将应用程序公开并让您的测试人员通过 facebook 应用程序登录,这应该是一个快速解决方案。我在 Facebook SDK 的另一部分也遇到了类似的问题,该问题已在公开版本中得到修复。
希望有帮助,朱利安
如果您的广告在很多地方,您可以将此代码放入 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 不是很清楚。
应用上述解决方案后,我仍然面临同样的问题。我通过添加 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];
}
如果有人有任何意见,我有一些不同的问题,请回复此堆栈溢出链接
错误 1001 - 无填充率。
如果您想测试真实广告,请尝试以下步骤:
对于我们的测试设备,它几乎每次都能正常工作。