首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AdMob RewardedVideoAd.loadAd总是返回“未能加载广告,错误代码: 0”

AdMob RewardedVideoAd.loadAd总是返回“未能加载广告,错误代码: 0”
EN

Stack Overflow用户
提问于 2016-07-04 09:35:20
回答 3查看 15.1K关注 0票数 9

我使用的是firebase-ads:9.2.0和API 24级。

通过在我的build.gradle中添加编译(名称:‘unity’,ext:' aar ')来导入unity模块。

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

但是,当我试图将统一广告和AdMob集成在一起时,就像这样:

代码语言:javascript
复制
    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 );

它总是会回来

有一个问题,得到广告的回应。ErrorCode: 0 加载广告失败: 0。

我做错什么了吗?

还是我错过了几步?

这是我的AdMob页面截图:

EN

回答 3

Stack Overflow用户

发布于 2016-07-06 08:36:20

好吧我找到解决办法了。

第一件事是我没有在我的项目中包括适配器。

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

把它放进libs文件夹。这些适配器不包括在SDK中(如果您从github下载它)。

第二,我必须将这一行从代码中删除。

代码语言:javascript
复制
.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")

看起来,如果AdMob把这个设备当作一个测试设备,就不会有任何视频广告要下载(至少在我的情况下是这样)。

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

因此,我更改为Genymotion,删除addTestDevice(),然后它就能工作了。

票数 6
EN

Stack Overflow用户

发布于 2017-07-12 11:27:20

这通常发生在新创建的广告,所以等待一个小时,然后再试一次。

公共静态最终int ERROR_CODE_INTERNAL_ERROR

内部发生了一些事情;例如,从广告服务器接收到无效的响应。

常量值: 0

来源:Google开发人员

票数 2
EN

Stack Overflow用户

发布于 2016-07-04 10:25:54

我在用间质广告,但我相信这也是同样的问题。谷歌有时会给出不起作用的代码,别问我为什么。

mRewardedVideoAd.loadAd()方法之后添加以下内容:

代码语言:javascript
复制
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() {
        }
    });

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

代码语言:javascript
复制
public static void displayAd() {
    if (mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.show();
    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38181365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档