Android Facebook原生广告错误:1001无法填写用户设备

时间:2017-09-12 10:40:41

标签: facebook-audience-network native-ads

我们的应用程序通过中介平台Mopub使用 Facebook原生广告,它运作良好,但我们应该转移到另一个平台。

我已使用相同的placementId和app_id替换了SDK平台,并将我的应用程序作为开发人员进行了测试。 在真实广告的测试模式下,一切都很好,但我无法在真实设备上获得广告。

我试图在没有任何中介平台(底部的代码)的情况下实现Facebook Native,但仍然有相同的结果。

所以问题不在合作伙伴平台上,但我无法在真实设备上获得广告。 Facebook Native抛出错误: 1001 no fill

看起来很奇怪,因为我有:

  • 应用程序拥有真实用户并在之前版本中显示广告。
  • PlayMarket中的应用程序(但使用之前的实现)具有相同的包ID,placementId和app_id。
  • Facebook检查了我的应用。
  • 我可以看到新版本和之前版本的请求。

代码和日志: AndroidManifest:     // ...         

//...
     <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/app_id" />

应用程序build.gradle:

//...
ext {
    supportLibraryVersion = '25.3.1'
    playServicesVersion = '11.0.1'
    FBVersion = "4.25.0"
}

dependencies {
    compile project(':library')
    compile fileTree(include: ['*.jar'], dir: 'libs')
//...
    compile "com.facebook.android:audience-network-sdk:$FBVersion"
//...
}

FacebookNativeLoader.java:

//...
    /**
     * Initiate ad container for native ad
     */
    Override
    public View createContentView(Context context) {
        log(" createContentView");
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        return inflater.inflate(R.layout.facebook_ad_native_view, null);
    }


    @Override
    public void loadAd(final MyViewManager myViewManager, final ResultListener resultListener) {
        log(" loadAd");
        adNativeLayout = myViewManager.getContentView();

        // Create ad request with Facebook ad PlacementId
        adNative = new NativeAd(myViewManager.getContext(), adPlacementId);

        //
        adNative.setAdListener(new AdListener() {
            @Override
            public void onError(Ad ad, AdError adError) {
                log("FacebookNative Ad Loading Failed." + 
                        "Error:" + NATIVE_LOAD_ERROR + 
                            "  ErrorCode:" + adError.getErrorCode() + 
                                " ErrorMessage" + adError.getErrorMessage());

                //Call Error to hide ad layout
                resultListener.onError(NATIVE_LOAD_ERROR);
            }

            @Override
            public void onAdLoaded(Ad ad) {
                log("FacebookNative Ad Loading Completed");

//...

                // Download icon for native ad
                if (adNative.getAdIcon() != null) {
                    String iconUrl = adNative.getAdIcon().getUrl();
                    if (iconUrl != null && iconUrl.length() > 0) 
                        NativeAd.downloadAndDisplayImage(adNative.getAdIcon(), icon);
                }

                // Download cover for native ad
                if (adNative.getAdCoverImage() != null) {
                    String coverUrl = adNative.getAdCoverImage().getUrl();
                    if (coverUrl != null && coverUrl.length() > 0) 
                        NativeAd.downloadAndDisplayImage(adNative.getAdCoverImage(), contentImage);
                }

                //Show debug info
                log("adNative.getCalltoAction() - " + adNative.getAdCallToAction());
                log("adNative.getBody() - " + adNative.getAdBody());
                log("adNative.getClickUrl() - " + adNative.getAdCallToAction());


                BaseLockScreenManager.url = adNative.getAdCallToAction();
                title.setText(adNative.getAdTitle());
                text.setText(adNative.getAdSubtitle());
                downloadButton.setText(adNative.getAdCallToAction());

                // Add the AdChoices icon
                LinearLayout adChoicesContainer = (LinearLayout) adNativeLayout.findViewById(R.id.ad_choices_container);
                AdChoicesView adChoicesView = new AdChoicesView(myViewManager.getContext(), adNative, true);
                adChoicesContainer.addView(adChoicesView);

                //Call Success to show ads
                resultListener.onSuccess(true);
            }

            @Override
            public void onAdClicked(Ad ad) {
                //Do something
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                //Do something
            }
        });

        //Register Ad container to catch user Interactions
        adNative.registerViewForInteraction(adNativeLayout);

        // Initiate a request to load an ad.
        // Loading Ad started here...
        adNative.loadAd();
    }

在Facebook文档&#34;错误:1001没有填写&#34;的意思是:

  

这是测试时看到的一个常见错误,与&#34; No Fill&#34;   响应;最常见的原因是用户未登录   在测试您的移动应用程序或未登录时访问Facebook应用程序   测试移动网站时的Facebook移动网站。

     

错误1001 - 无填充。可能是由于以下一项或多项原因:     - 用户未登录移动设备上的原生Facebook应用程序(但真实设备登录到原生Facebook应用程序)

     
      
  • 启用了限制广告跟踪(iOS)(但这与Android应用无关)
  •   
  • 选择停用基于兴趣的广告(Android)(但我已关闭价值)
  •   
  • 当前用户没有广告资源(这是什么意思?)
  •   
  • 您的测试设备必须安装原生Facebook应用程序。(但我使用真实Facebook帐户在真实设备上测试过)
  •   
  • 您的应用程序应在30秒后尝试再次提出请求。(但我每次都会得到相同的结果)
  •   

LogCat消息:

开发者设备:

FacebookLoader:
    I/----FacebookLoader:  loadAd
    I/----FacebookLoader:  createContentView
    I/----FacebookLoader: Facebooknative Ad Loading Completed
    I/----FacebookLoader: adNative.getCalltoAction() - Learn More
    I/----FacebookLoader: adNative.getBody() - LAToken aims to tokenize assets worth $1.2 trillion by 2025.
    I/----FacebookLoader: adNative.getClickUrl() - Learn More

用户设备:

FacebookLoader:
    I/----FacebookLoader:  loadAd
    I/----FacebookLoader:  createContentView
    I/----FacebookLoader: FacebookNative Ad Loading Failed.Error:669  ErrorCode:1001 ErrorMessage: No fill

有什么问题呢?有人有同样的问题吗?

我害怕在没有能力确保用户可以看到广告的情况下发布,因为我们的应用程序的主要思想是广告。

0 个答案:

没有答案