如何在 android 中使用 Facebook Audience Network 解决错误 = 1001 "No Fill"

How to resolve Error = 1001 "No Fill" using Facebook Audience Network in android

我有一个 Android 版本的应用程序并将 FAN 集成到我的应用程序中。 它工作了几个月,但现在显示“NO FILL

Error Domain=com.facebook.ads.sdk Code=**1001 "No fill"** 
UserInfo={NSLocalizedDescription=**No fill**, 
FBAdErrorDetailKey={ msg = "**No fill**"}}

并且没有显示 FAN 广告。如果我输入 testing ID,它就会显示,但只显示在我的设备上,不会显示在其他设备上。

如何解决这个问题"No Fill"?

compile 'com.facebook.android:audience-network-sdk:4.+'

在build.gradle中提到 我已经看到很多关于此的问题,但无法找到答案。

我已经看过以下链接:

  1. Facebook AudienceNetwork loaded failure: No fill, Error Message "No fill", what is the reason about FaceBook android Advertise?

  2. facebook audience network testing on test flight No Fill

  3. Audience Network iOS Ads Suddenly Become "No Fill"

  4. Facebook Audience Network returns "No fill"

  5. Testing Audience Network Implementation

我的问题已经解决,直到我用我的管理员帐户登录到 facebook 应用程序并再次从 google play 下载我的应用程序。

针对您的问题提出几点建议: "No Fill" 错误代码 1001 - 是一个常见错误,FAN 没有将广告返回给您的广告。

确保以下事项: - 具有展示位置 ID 的广告状态(Audience Network> 广告 Space> 展示位置)必须是 "Enabled and received ad request recently" (1) - 您的广告状态必须由 Facebook 审核和批准。 (2)

如果(1),您可以尝试禁用并重新启用。 如果 (2),您必须从 google play + 使用管理员帐户登录/或开发人员/测试人员(添加在角色选项卡中)下载 facebook 应用程序),我建议使用管理员帐户登录;并直接从 google play 下载您的应用。

您说您的申请已经活跃了一段时间,以上都是对的,最后是给 Audience Network 团队发消息,他们会在 3-5 个工作日内回复。

尝试 this.It 解决了我的问题。 you have to follow this steps for solve this problem 在此给出了所有屏幕截图和步骤。

希望对您有所帮助。由于 audience Network 选项卡 ad-spaces 组中的 facebook 开发者控制台更新是从 [=32= 新创建的]展示位置。您必须按照以下步骤操作。可能对其他人有帮助。

我还发布了屏幕截图和详细步骤。

这里点击up-grouped for appName 然后按照步骤操作。

  1. 勾选任何一个广告的复选框,然后放置按钮将被启用。

  2. 输入与广告将在您的应用程序中显示的位置相关的名称和说明,然后单击 移动 按钮

  3. 移动一个广告后,您还可以 select 未分组广告中的其他广告,并将其移动到 ad-spaces ,此处将引导您选择移动现有的创建新的 ad-space.

  4. 如果您想创建一个新的,然后 select 新的单选按钮。输入名称和描述后单击移动。

在您的应用通过Facebook审核前,您需要添加测试设备进行测试。以下是获取设备哈希的方法。

NSLog(@"the test device hash is %@",[FBAdSettings testDeviceHash]); 

运行 应用程序并从日志中复制 testDeviceHash,然后将其添加到 FBAdSettings

[FBAdSettings addTestDevice:@"YOUR_TEST_DEVICE_HASH_CODE_HERE"];

You need to do it before you init the FBAdView

我设法解决了这个问题。我的步骤:

1.确保在您的代码中设置测试设备哈希

  • 首先从 xCode 模拟器而不是您的设备进行测试,以确保它运行良好。
  • 在某处添加此日志(例如 viewDidLoad)以显示您的 xCode 模拟器设备哈希:
NSLog(@"%@",[FBAdSettings testDeviceHash]);
  • 然后在你的代码中设置它:
[FBAdSettings addTestDevice:@"YOUR_TEST_DEVICE_HASH"];

2。确保您使用的是正确的 placementID

  • 转到货币化管理器主页
  • 在左侧菜单中展开集成
  • 单击“属性”
  • 复制您的属性的 ID 并将其粘贴到您的代码中:
- (void)loadNativeAd{
    FBNativeAd *nativeAd = [[FBNativeAd alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID"];
    nativeAd.delegate = self;
    NSLog(@"%@",[FBAdSettings testDeviceHash]);
    [FBAdSettings addTestDevice:@"YOUR_TEST_DEVICE_HASH"];
    [nativeAd loadAd];
}

它对我有用。

试试这个版本,检查它是否工作

implementation 'com.facebook.android:audience-network-sdk:5.1.0'

我想测试广告时遇到同样的错误。

错误:无填充错误代码 [1001] 无填充。我们无法向此人投放广告。

我没有注册 AD,因为我的应用当时还没有上线。所以,我没有广告 Id 。当我收到该错误时,我正在使用测试 ID "YOUR_PLACEMENT_ID" 进行演示。所以只有测试id是不够的,无法在Facebook Ad中获取测试广告。

我找到了如下解决方案。

当您是 initialize AudienceNetworkAds 时,只需启用 testmode 即可。

AdSettings.setTestMode(true)

class AudienceNetworkInitializeHelper : AudienceNetworkAds.InitListener {

        override fun onInitialized(result: AudienceNetworkAds.InitResult) {
            Log.d(AudienceNetworkAds.TAG, result.message)
        }

        companion object {

            internal fun initialize(context: Context) {
                if (!AudienceNetworkAds.isInitialized(context)) {
                    if (DEBUG) {
                        AdSettings.turnOnSDKDebugger(context)
                        AdSettings.setTestMode(true)// for get test ad in your device
                    }

                    AudienceNetworkAds
                            .buildInitSettings(context)
                            .withInitListener(AudienceNetworkInitializeHelper())
                            .initialize()
                }
            }
        }
}

My audience-network-sdk is implementation 'com.facebook.android:audience-network-sdk:5.4.0' and It's work also in 5.6.0 .