Android应用程序的某些用户无法加载AdMob广告

时间:2019-09-30 19:54:35

标签: android admob adsense-api admob-rewardedvideoad

我正在寻求最佳实践或实施方案。

我的应用程序的核心功能提供了很长时间(2到4个小时)的服务。用户有一些活动时间,当他们使用该服务时,就会消耗活动时间。用户可以通过观看AdMob的奖励视频广告来恢复活动时间。

问题是,某些用户(少于3%)无法在其设备上看到任何广告。我收到很多抱怨,说他们无法加载广告。大多数没有看到AD的用户都在使用AD阻止程序,但是有些用户处于“ AD没填”状态(错误代码3)。在这种情况下,我的应用似乎生成了过多的广告请求(通过用户单击“观看广告”),因此AdMob不能总是填充广告。我的应用允许用户每天观看少于10次的广告。

我有一些计划,想知道哪个更好:

1)包括另一个AD提供程序。当AdMob的广告未填写时,我的应用会加载另一个广告。 缺点:2倍的代码复杂度和2倍的维护工作。

2)如果没有填写真实广告,请加载AdMob的测试广告。 缺点:没有钱

3)未填充广告时,请加载另一个AdMob广告单元。 缺点:我不确定是否可行。 AdMob应该已经确定用户(不是广告单元)没有针对此请求获得广告,因此生成另一个请求无济于事。并且根据此AdMob loading multiple rewarded videos讨论,不允许加载多个AD单元。

4)我没有想到的其他人。

5)观看奖励广告的10次是否太多?

1 个答案:

答案 0 :(得分:1)

尽管在Admob banner ad not loading in android P线程中,用户端的解决方法有效(基于用户对我的应用程序的反馈),但由于该线程的问题,我仍然为该应用程序打了补丁。

我最后的方法是处理 errorCode == 0 3 的错误。 根据{{​​3}}, onRewardedAdFailedToLoad()方法存在4个错误:

错误代码== 0:ERROR_CODE_INTERNAL_ERROR -内部发生了某些事情;例如,从广告服务器收到无效的响应。

错误代码== 1:ERROR_CODE_INVALID_REQUEST -广告请求无效;例如广告单元ID不正确。

错误代码== 2:ERROR_CODE_NETWORK_ERROR -由于网络连接,广告请求失败。

错误代码== 3:ERROR_CODE_NO_FILL -广告请求成功,但由于缺少广告资源而没有退回任何广告。

情况1 仅由粗心的开发人员执行。它不应该发生。它不是用户可触发的。

当用户使用AD阻止程序或网络连接断开时,发生

情况2 。它是用户可触发的。

情况0 情况3 不受用户或开发人员的控制。

我的代码可以处理情况0 3 的错误。此代码忽略 errorCode == 2 ,以防止用户使用AD阻止程序或关闭网络以获得奖励。从现在开始,大多数用户都很高兴。

注意:代码

  

(errorCode == 2 && BuildConfig.DEBUG)

用于测试目的。我可以关闭网络以触发 errorCode == 2 ,以查看此方法是否正常工作。

这是我所有的代码:

@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
    if (BuildConfig.DEBUG) {  // ad should be loaded but not
        Log.i(TAG, "Ad: onRewardedVideoAdFailedToLoad(): " + errorCode);
    }
    adButton.setEnabled(false);
    adButton.setText(getString(R.string.text_ad_unavailable, errorCode));

    if (errorCode == 0 || errorCode == 3 || (errorCode == 2 && BuildConfig.DEBUG)) {
        noAdButton.setEnabled(true);  // give 1/4 reward of watching AD
        noAdButton.setVisibility(View.VISIBLE);
    }
}