如何通过 TestFlight 测试 Facebook Audience Network 广告?
Posted
技术标签:
【中文标题】如何通过 TestFlight 测试 Facebook Audience Network 广告?【英文标题】:How to test Facebook Audience Network ads over TestFlight? 【发布时间】:2015-11-25 05:58:09 【问题描述】:我正在尝试将 Audience Network 集成到我的应用中。当我通过 XCode 部署时,广告在模拟器和设备上正常工作。
我想通过 TestFlight 分发构建,以确保它可以在发布模式下工作。当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook 会为广告返回“无填充”。广告也不会显示在 TestFlight 构建中。
对在 TestFlight 版本中为设备展示广告有什么想法吗?
【问题讨论】:
您的 2 种配置(调试/发布)之间有什么区别?也许您仅为您的调试配置激活了 Facebook Audience Network 的调试模式(即调试设备列表)?您的 Facebook 应用是否经过验证? 配置相同。此外,当我在 Release 方案中运行应用程序时,我在模拟器和设备上都看到了广告。 虽然您在发布模式下的设备上没有广告:“当我尝试在发布模式下直接从 XCode 部署到我的设备时,Facebook 为广告返回“无填充”。”跨度> @Luda 您是否获得了在 testflight 构建中投放广告的解决方案?我试过了,但我没有在设备上看到用于 testflight 构建的广告,但是当我通过 xcode 运行代码时我看到了广告。 @iYoung,如果我使用 testflight 分发代码,广告就不会显示。我的解决方案是使用 Crashlytics 进行分发。 【参考方案1】:这可能有两个主要原因。首先,用户或测试人员无法在设备上登录本机 Facebook 应用程序。这可能会导致Error 1001 - No Fill Rate
。
1001 - 无填充
这是测试时常见的错误,与“无填充”有关 回复;最常见的原因是用户未登录 到测试设备上的本机 Facebook 应用程序。
服务器响应 SDK 文档代码=1001 “No Fill” 错误 1001 - 否 填。可能是由于以下一项或多项原因:
用户未在移动设备上登录本机 Facebook 应用 已启用限制广告跟踪 (ios) 当前用户没有广告资源 您的测试设备必须安装本机 Facebook 应用程序。 您的应用程序应尝试创建另一个 30 秒后请求。
这是documentation 告诉您的 1001 错误。
其次,您可能仍处于调试模式,因此在发布模式下看不到广告。要修复此错误,请从 Apple 开发人员中心下载最新的配置文件并将 Facebook 应用程序切换为已发布。您可以通过登录 Facebook 开发者控制台并选择您的应用程序来做到这一点。然后在左侧应该有此列,您可以在其中选择 STATUS & REVIEW。 然后,切换“你想公开这个应用吗?”切换到是。 这将使您的应用可供任何人使用,这意味着广告将与您的所有测试人员一起弹出。
根据我的经验,我的两分钱是您没有公开您的应用或没有将用户添加为 beta 测试人员。因此,facebook 无法投放任何引发 1001 错误的广告。通过将应用程序公开并让您的测试人员通过 facebook 应用程序登录,这应该是一个快速解决方案。我在 Facebook SDK 的另一部分遇到了类似的问题,该问题已在公开版本中得到修复。
希望对你有帮助,朱利安
【讨论】:
【参考方案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 广告,并且测试设备将被清除。
在 didFinishLaunchingWithOptions 中调用:facebookAdsControl()
您也可以在有广告的代码中调用此代码,但请确保在 adView.load()
之前调用它
为了使用宏,您必须在构建设置中将标志添加到您的 Swift 标志中
我希望这对某人有所帮助,因为我发现 Facebook 文档不是很清楚。
【讨论】:
更多信息添加 Swift 标志:kitefaster.com/2016/01/23/…【参考方案3】:应用上述解决方案后,我仍然面临同样的问题。我已经通过添加 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
【讨论】:
【参考方案4】:错误 1001 - 无填充率。
如果您想测试真实广告,请尝试以下步骤:
-
登录 Facebook 应用
打开 Safari
在 google 上找到“macbook air buy”,打开任何商店,将 macbook 添加到购物车
打开 Facebook 应用,下拉刷新 Facebook 历史记录
打开您的应用
使用不同的搜索字词重复第 2-5 步,直到广告出现在您的应用中
对于我们的测试设备,它几乎每次都能正常工作。
【讨论】:
以上是关于如何通过 TestFlight 测试 Facebook Audience Network 广告?的主要内容,如果未能解决你的问题,请参考以下文章
如何在预发布测试中从 TestFlight 应用程序中检索崩溃日志