在 Admob 20.1.0 中永远不会调用 onUserEarnedReward

Posted

技术标签:

【中文标题】在 Admob 20.1.0 中永远不会调用 onUserEarnedReward【英文标题】:onUserEarnedReward is never called in Admob 20.1.0 【发布时间】:2021-06-08 17:14:42 【问题描述】:

我正在努力将我的 Kotlin 应用程序转换为 Admob 20.1.0。在集成奖励广告时遇到问题。

问题是 onUserEarnedReward 永远不会被调用。我目前无法用他们解锁的内容来奖励用户。我下面的代码放在onClickListener 中的AppCompatActivity()

if (mRewardedAd != null) 
    mRewardedAd?.show(this, OnUserEarnedRewardListener  // Redundant SAM-constructor 
        fun onUserEarnedReward(rewardItem: RewardItem)  // Function "onUserEarnedReward" is never used 
            
            val rewardAmount = rewardItem.amount
            val rewardType = rewardItem.type
            println("======================= TYPE -  $rewardType /// AMOUNT - $rewardAmount")
            // This never gets called.
        
    )
 else 
    println("=======================The rewarded ad wasn't ready yet.")

我的进口:

import com.google.android.gms.ads.*
import com.google.android.gms.ads.rewarded.RewardItem
import com.google.android.gms.ads.rewarded.RewardedAd
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback
import com.google.android.gms.ads.OnUserEarnedRewardListener

为什么我得到冗余 SAM 构造函数从未使用过“onUserEarnedReward”函数

【问题讨论】:

这对您有帮助吗? ***.com/questions/40187101/… @JackChampagne - 一切都在 AdMob 端正确配置。在我升级到 20.1.0 之前,奖励广告运行良好 【参考方案1】:

原因是您在高阶函数中创建一个函数而不是调用该函数。 请尝试以下代码。它会工作

       mRewardedAd?.show(this, OnUserEarnedRewardListener  rewardItem ->
        val rewardAmount = rewardItem.amount
        val rewardType = rewardItem.type
        println("======================= TYPE -  $rewardType /// AMOUNT - $rewardAmount")
      

为了您更好地理解下面的代码中的高阶函数

   mRewardedAd?.show(this, OnUserEarnedRewardListener  
    fun onUserEarnedReward(rewardItem: RewardItem)  
        val rewardAmount = rewardItem.amount
        val rewardType = rewardItem.type
        println("======================= TYPE -  $rewardType /// AMOUNT - $rewardAmount")
    
    onUserEarnedReward(it)
)

【讨论】:

以上是关于在 Admob 20.1.0 中永远不会调用 onUserEarnedReward的主要内容,如果未能解决你的问题,请参考以下文章

电子:app.on('ready') 永远不会被调用

如何正确停止展示 AdMob 横幅广告?

可以永远不会调用 onLocationChanged 吗?

如何在统一游戏中投放 Admob 广告?

v-on:click 永远不会触发 Nuxt 组件中的按钮,因为中间件

如何在屏幕中心显示Unity Google AdMob横幅