AdMob RewardedVideoAd.loadAd始终返回"无法加载广告,错误代码:0"

Kim*_*hiu 8 android admob firebase

我正在使用firebase-ads:9.2.0,API级别为24.

通过在我的build.gradle中添加compile(名称:'unity-ads',ext:'aar')来导入unity-ads aar模块.

如果我选择直接使用UnityAds API,一切都会好起来的.

但是,当我尝试将统一广告与AdMob集成时,如下所示:

    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance( this );

    mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
        @Override
        public void onRewardedVideoAdLoaded() {
            logger.debug("onRewardedVideoAdLoaded");
        }

        @Override
        public void onRewardedVideoAdOpened() {
            logger.debug("onRewardedVideoAdOpened");
        }

        @Override
        public void onRewardedVideoStarted() {
            logger.debug("onRewardedVideoStarted");
        }

        @Override
        public void onRewardedVideoAdClosed() {
            logger.debug("onRewardedVideoAdClosed");
        }

        @Override
        public void onRewarded(RewardItem rewardItem) {
            logger.debug("onRewarded");
        }

        @Override
        public void onRewardedVideoAdLeftApplication() {
            logger.debug("onRewardedVideoAdLeftApplication");
        }

        @Override
        public void onRewardedVideoAdFailedToLoad(int i) {
            Toast.makeText( 
                getApplicationContext(), 
                "onRewardedVideoAdFailedToLoad", 
                Toast.LENGTH_SHORT ).show();
        }
    });

    AdRequest adRewardRequest = new AdRequest.Builder()
        .addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
        .build();

    mRewardedVideoAd.loadAd( 
        getResources().getString(R.string.reward_ad_unit_id), 
        adRewardRequest );
Run Code Online (Sandbox Code Playgroud)

它总是回归

获得广告响应时出现问题.ErrorCode:0
无法加载广告:0.

有什么我以错误的方式做到了吗?

或者我只是错过了一些步骤?

这是我的AdMob页面截图:

AdMob页面

Kim*_*hiu 6

好的,我找到了解决方案.

第一件事是我的项目中没有包含适配器.

我必须在这里下载adpaters: 第三方网络适配器

并将其放入libs文件夹中.这些适配器不包含在SDK中(如果从github下载).

其次,我必须从我的代码中删除这一行.

.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
Run Code Online (Sandbox Code Playgroud)

看起来如果AdMob将此设备视为测试设备,则不会下载任何视频广告(至少在我的情况下).

如果我选择使用AVD,他们会强制在这些模拟器上显示测试广告.

所以我改为Genymotion,删除addTestDevice()然后它工作.


leo*_*onz 1

我正在使用插页式广告,但我相信这是同样的问题。谷歌有时会给出不起作用的代码,不要问我为什么。

在您的方法之后添加此内容mRewardedVideoAd.loadAd()

mRewardedVideoAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            //your code when Ad is loaded
            //you can show your ad immediately, but I don't suggest it
            if (mRewardedVideoAd.isLoaded()) {
                mRewardedVideoAd.show(); //this shows ad immediately
            }
        }

        @Override
        public void onAdClosed() {
        }
    });
Run Code Online (Sandbox Code Playgroud)

或者您可以设置 AdListener,不要立即显示它,而是创建一个新方法:

public static void displayAd() {
    if (mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以从任何活动调用此方法,该方法几乎立即显示广告(因为它已经加载),而无需再次加载。