0

我正在尝试在片段中实施 admob 广告,但已经一个月了,我仍然收到错误 3(没有广告可填充)。

我已尝试使用新 ID,但仍然出现相同的错误,测试广告工作正常。日志猫:

 
    08-03 16:59:21.653 9892-10265/? W/AdvertisingIdClient: Error while reading from SharedPreferences
    java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
    at android.app.ContextImpl.checkMode(ContextImpl.java:2134)
    at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:354)
    at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:349)
    at 
 com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source)
    at com.duapps.ad.base.GoogleAdvertisingIdHelper.getAdIdNormal(GoogleAdvertisingIdHelper.java:46)
        at com.duapps.ad.base.GoogleAdvertisingIdHelper.getAdId(GoogleAdvertisingIdHelper.java:33)
        at com.duapps.ad.base.HttpParamsHelper.commonParams(HttpParamsHelper.java:118)
        at com.duapps.ad.stats.ToolStatsCore.pushToServer(ToolStatsCore.java:370)
        at com.duapps.ad.stats.ToolStatsCore.report(ToolStatsCore.java:325)
        at com.duapps.ad.stats.ToolStatsCore.handleMessage(ToolStatsCore.java:217)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:154)
        at android.os.HandlerThread.run(HandlerThread.java:61)
        08-03 16:59:24.873 26224-26246/? D/DynamitePackage: Instantiating 
        com.google.android.gms.ads.adshield.ChimeraAdShieldCreatorImpl
        08-03 16:59:25.489 25315-25315/com.nsdeveloper.apppromotion I/Ads: 
        Starting ad request.
        08-03 16:59:25.489 25315-25315/com.nsdeveloper.apppromotion I/Ads: Use 
       AdRequest.Builder.addTestDevice("10C9D896CF812C194BD949D82F766C9B") 
        to get test ads on this device.
        08-03 16:59:25.850 25315-25332/com.nsdeveloper.apppromotion I/Ads: No fill from ad server.
        08-03 16:59:25.850 25315-25315/com.nsdeveloper.apppromotion W/Ads: Failed to load ad: 3
 

我正在片段中实现广告,所以在上下文中我传递了 getActivity() :

MobileAds.initialize(getActivity(), "xxxxxxxxxxxxxxxxxxx");
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getActivity());
    mRewardedVideoAd.setRewardedVideoAdListener(rewardAdListener);
    loadRewardedAdVideo();

奖励视频广告监听器

RewardedVideoAdListener rewardAdListener = new RewardedVideoAdListener() {

    @Override
    public void onRewardedVideoAdLoaded() {
        Toast.makeText(getActivity(),"ad is loaded",Toast.LENGTH_SHORT).show();
        Log.d("ADS_SHOW","loaded");


    }

    @Override
    public void onRewardedVideoAdOpened() {

    }

    @Override
    public void onRewardedVideoStarted() {

    }

    @Override
    public void onRewardedVideoAdClosed() {
        loadRewardedAdVideo();
    }

    @Override
    public void onRewarded(RewardItem rewardItem) {
        int rewardPoints =   rewardItem.getAmount();
        int userPoints = getActivity().getSharedPreferences(PREFERENCE,0).getInt(POINTS,0) - rewardPoints;
        userRef.child(POINTS).setValue(userPoints);
        getActivity().getSharedPreferences(PREFERENCE,0).edit().putInt(POINTS,userPoints).commit();




    }

    @Override
    public void onRewardedVideoAdLeftApplication() {

    }

    @Override
    public void onRewardedVideoAdFailedToLoad(int i) {
        Toast.makeText(getActivity(),"No ads to show "+i,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoCompleted() {





    }
};


private void loadRewardedAdVideo(){
    if(! mRewardedVideoAd.isLoaded()){
         mRewardedVideoAd.loadAd("ca-app-pub-xxxxxxxxx", new AdRequest.Builder().build());
    }
}

4

2 回答 2

0

尝试在测试模式下运行您的广告,如果它会向您显示错误,那么您的代码一定是错误的阅读 admob implementation 的文档 Google docs for video ads

我注意到一件事,您可能会尝试在公共模式下读取共享偏好,它是在私有模式下写入的,这就是错误出现的原因。

如果您在测试模式下看到广告,那么我可能有两件事,一是您的应用程序 ID 可能错误,二是您所在的地区没有这样的奖励广告,因此谷歌无法填充广告

于 2018-08-04T20:10:35.940 回答
0

我遇到了同样的问题 - 我在网上看到谷歌可以稍后决定是否打开您的广告。

有时他们会关闭广告,因为开发人员点击了它们。许多开发人员过去都在这样做,因此谷歌似乎对此很谨慎。

最后我没有解决我与谷歌的问题——我也写信给他们的支持,并在 facebook 网络观众中注册——它是一样的,只是 facebook。现在我得到它们了。还有一个系统允许您注册测试设备 - 这意味着 - 通过手机的 ID,然后您也可以点击广告,这不会有问题 - 因为它现在是测试设备。

FB 奖励视频

于 2019-11-24T18:59:36.680 回答