首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复AdMob RewardedVideoAd时崩溃

恢复AdMob RewardedVideoAd时崩溃
EN

Stack Overflow用户
提问于 2018-04-21 19:27:33
回答 2查看 1.6K关注 0票数 2

在上一个AdMob版本15.0.0中,当从另一个活动返回后尝试恢复RewardedVideoAd时,我会崩溃。

代码语言:javascript
复制
 java.lang.ClassCastException: com.google.ads.mediation.admob.AdMobAdapter cannot be cast to com.google.android.gms.ads.mediation.m
     at com.google.android.gms.ads.internal.mediation.client.y.a(:com.google.android.gms.dynamite_dynamitemodulesa@12529004@12.5.29 (000308-192802242):262)
     at com.google.android.gms.ads.internal.reward.c.b(:com.google.android.gms.dynamite_dynamitemodulesa@12529004@12.5.29 (000308-192802242):54)
     at com.google.android.gms.ads.internal.reward.client.e.onTransact(:com.google.android.gms.dynamite_dynamitemodulesa@12529004@12.5.29 (000308-192802242):57)
     at android.os.Binder.transact(Binder.java:361)
     at com.google.android.gms.internal.zzev.zzb(Unknown Source)
     at com.google.android.gms.internal.zzaez.zzc(Unknown Source)
     at com.google.android.gms.internal.zzafk.resume(Unknown Source)
     at com.byteghoul.grimdefender.GhoulAdsAndroid3.onResume(GhoulAdsAndroid3.java:411)
     at com.byteghoul.grimdefender.AndroidLauncher.onResume(AndroidLauncher.java:437)
     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1198)
     at android.app.Activity.performResume(Activity.java:5530)
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3047)
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3086)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:136)
     at android.app.ActivityThread.main(ActivityThread.java:5586)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
     at dalvik.system.NativeStart.main(Native Method)

集成似乎没问题,我只是跟踪AdMob文档,没有什么奇怪的。

我检查了Google示例,得到了同样的错误。

关于进一步的信息,下面是我的RewardedVideo包装器:

代码语言:javascript
复制
class VideoAd @Inject constructor(@Named(BaseActivity.BaseModule.ACTIVITY_CONTEXT) private val context: Context) {

private var isAlreadyPrepared: Boolean = false
private lateinit var rewardedVideoAd: RewardedVideoAd
private val customListener: CustomVideoListener = CustomVideoListener()
private var adsListener: AdsListener = object : AdsListener {}
val isVideoLoaded: Boolean
    get() = rewardedVideoAd.isLoaded

fun prepare(listener: AdsListener) {
    adsListener = listener
    if (isAlreadyPrepared) {
        return
    }
    rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(context)
    rewardedVideoAd.rewardedVideoAdListener = customListener
    val adRequest: AdRequest = AdRequest.Builder()
        .addTestDevice(ADS_ID_TEST_DEVICE)
        .addTestDevice(ADS_ID_TEST_DEVICE_2)
        .build()
    rewardedVideoAd.loadAd(VIDEO_ADS_ID, adRequest)
    isAlreadyPrepared = true
}

fun show() {
    if (isVideoLoaded) {
        rewardedVideoAd.show()
    } else {
        logNonFatalException("Video Ad not loaded successfully before show it")
        adsListener.onVideoAdNotLoaded()
    }
}

fun onPauseActivity() {
    rewardedVideoAd.pause(context)
}

fun onResumeActivity() {
    rewardedVideoAd.resume(context)
}

fun onDestroyActivity() {
    rewardedVideoAd.destroy(context)
}

private inner class CustomVideoListener : RewardedVideoAdListener {
    override fun onRewardedVideoAdClosed() {
        adsListener.onAdsFinishedSuccessfully()
    }

    override fun onRewardedVideoAdLeftApplication() {
    }

    override fun onRewardedVideoAdLoaded() {
    }

    override fun onRewardedVideoAdOpened() {
    }

    override fun onRewardedVideoCompleted() {
    }

    override fun onRewarded(reward: RewardItem?) {
        adsListener.onAdsFinishedSuccessfully()
    }

    override fun onRewardedVideoStarted() {
    }

    override fun onRewardedVideoAdFailedToLoad(p0: Int) {
    }
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-21 19:33:24

在google bug跟踪中搜索似乎是15.0.0版本的一个bug:

https://groups.google.com/forum/#!topic/google-admob-ads-sdk/XtVZFQ-nl98

可能的解决办法是:

  • 将版本降级为以前的稳定版本。
  • 等到谷歌推出修补程序。
票数 3
EN

Stack Overflow用户

发布于 2018-07-04 09:10:00

我也遇到了同样的问题,我将AdMob版本15.0.0改为15.0.1,运行良好。

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

https://stackoverflow.com/questions/49959466

复制
相关文章

相似问题

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