show RewardedAd from object class

32 Views Asked by At

I need to reduce my app size by collect recurring functions in one place

All functions works fine Except RewardedAd

I want to return a value confirming that ad was shown until end by set variable named adRewardedBoolean to True

Here's my Kotlin code

//Rewarded
private const val adRewardedID = "ca-app-pub-3306064401573277/5337641258"
private var adRewardedBoolean: Boolean = false
private var adRewardedIsLoading = false
private var adRewarded: RewardedAd? = null
private var adRewardAmount: Int = 0
private var adRewardedTimes: Int = 0

//Call loadRewardedAd from any activities
//Ads.loadRewardedAd(this)
fun loadRewardedAd(context: Context): Boolean {
    context as Activity
    if (adRewarded == null) {
        adRewardedIsLoading = true
        val adRequest = AdRequest.Builder().build()
        RewardedAd.load(context,
            adRewardedID,
            adRequest,
            object : RewardedAdLoadCallback() {
                override fun onAdFailedToLoad(adError: LoadAdError) {
                    adRewardedIsLoading = false
                    adRewarded = null
                    if (adRewardedTimes == 3) {
                        adRewardAmount++
                        adRewardedBoolean = true
                        log("onAdFailedToLoad")
                        //checkRewardedAd(adRewardAmount)
                    } else {
                        adRewardedTimes++
                        loadRewardedAd(context)
                    }
                }

                override fun onAdLoaded(rewardedAd: RewardedAd) {
                    adRewarded = rewardedAd
                    adRewardedIsLoading = false
                    adRewarded?.fullScreenContentCallback =
                        object : FullScreenContentCallback() {
                            override fun onAdDismissedFullScreenContent() {
                                adRewarded = null
                                adRewardedBoolean = true
                                log("onAdDismissedFullScreenContent")                                
                            }

                            override fun onAdFailedToShowFullScreenContent(adError: AdError) {
                                adRewarded = null
                                loadRewardedAd(context)
                            }

                            override fun onAdShowedFullScreenContent() {
                            }
                        }
                    adRewarded?.show(context) { rewardItem ->
                        adRewardAmount = rewardItem.amount
                    }
                }
            })
    }
    log(adRewardedBoolean.toString())
    return adRewardedBoolean
}
0

There are 0 best solutions below