Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AdMob Rewarded Video Ad error (exception)

Admob RewardedVideoAd sometimes does not show video. For the first time, advertising is always shown. For the second or third time, advertising is not shown. In this case, I get such a log:

03-24 13:08:26.754 4458-4458/net.dailytoys.afterthecrash W/Ads: Could not show rewarded video ad from adapter.
                                                                java.lang.NullPointerException: Attempt to read from field 'com.google.android.gms.ads.internal.client.bp hu.a' on a null object reference
                                                                    at com.google.ads.mediation.a.h(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):356)
                                                                    at com.google.android.gms.ads.internal.mediation.client.y.f(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):208)
                                                                    at com.google.android.gms.ads.internal.reward.a.a(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):41)
                                                                    at com.google.android.gms.ads.internal.reward.c.a(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):18)
                                                                    at com.google.android.gms.ads.internal.reward.client.e.onTransact(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):11)
                                                                    at android.os.Binder.transact(Binder.java:388)
                                                                    at com.google.android.gms.internal.zzeu.zzb(Unknown Source)
                                                                    at com.google.android.gms.internal.zzadm.show(Unknown Source)
                                                                    at com.google.android.gms.internal.zzadx.show(Unknown Source)
                                                                    at net.dailytoys.afterthecrash.ActionResolverAndroid$2.run(ActionResolverAndroid.java:86)
                                                                    at android.os.Handler.handleCallback(Handler.java:815)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                    at android.os.Looper.loop(Looper.java:194)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5877)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:372)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1015)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
03-24 13:08:26.755 4458-4458/net.dailytoys.afterthecrash W/Ads: Could not call showVideo.
                                                                android.os.RemoteException
                                                                    at com.google.android.gms.ads.internal.mediation.client.y.f(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):212)
                                                                    at com.google.android.gms.ads.internal.reward.a.a(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):41)
                                                                    at com.google.android.gms.ads.internal.reward.c.a(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):18)
                                                                    at com.google.android.gms.ads.internal.reward.client.e.onTransact(com.google.android.gms.DynamiteModulesA@[email protected] (246-188803320):11)
                                                                    at android.os.Binder.transact(Binder.java:388)
                                                                    at com.google.android.gms.internal.zzeu.zzb(Unknown Source)
                                                                    at com.google.android.gms.internal.zzadm.show(Unknown Source)
                                                                    at com.google.android.gms.internal.zzadx.show(Unknown Source)
                                                                    at net.dailytoys.afterthecrash.ActionResolverAndroid$2.run(ActionResolverAndroid.java:86)
                                                                    at android.os.Handler.handleCallback(Handler.java:815)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                    at android.os.Looper.loop(Looper.java:194)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5877)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:372)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1015)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

My init method:

private void initAdMob () {
        MobileAds.initialize(this, AD_MOB_ID);
        mRewardedVideoBonusAd = MobileAds.getRewardedVideoAdInstance(this);
        mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());

        mRewardedVideoBonusAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
            @Override
            public void onRewardedVideoAdLoaded() {
                System.out.println(adLogPrefix + " rewarded (bonus) loaded.");
            }

            @Override
            public void onRewardedVideoAdClosed() {
                System.out.println(adLogPrefix + " rewarded (bonus) closed.");
                mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());
            }

            @Override
            public void onRewarded(RewardItem rewardItem) {
                mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());
            }

            @Override
            public void onRewardedVideoAdFailedToLoad(int i) {
                actionResolverAndroid.logAnalyticEvent(AnalyticsKeys.AD_ERR_LOADING_REW_VIDEO);
                new Handler().postDelayed(
                        new Runnable() {
                            @Override
                            public void run() {
                                mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());
                            }
                        },
                        1000 * 15 // 15 seconds
                );
                System.out.println(adLogPrefix + " error loading rew (bonus).");
            }
        });
    }

I did everything as it is written in the official documentation. What could be the problem?

like image 438
Pasha Oleynik Avatar asked Nov 24 '25 20:11

Pasha Oleynik


1 Answers

This is a known issue with AdMob rewarded videos.

Consider removing the request from the Rewarded-Callback and leave it in Closed-Callback, so you don't have both, and they can't interfere with each other.

@Override
public void onRewardedVideoAdClosed() {
    System.out.println(adLogPrefix + " rewarded (bonus) closed.");
    // REMOVE THIS LINE BELOW
    mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());
}

@Override
public void onRewarded(RewardItem rewardItem) {
    mRewardedVideoBonusAd.loadAd(ID_REW_BONUS, new AdRequest.Builder().build());
}
like image 196
Sergei Emelianov Avatar answered Nov 27 '25 08:11

Sergei Emelianov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!