0

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
}
  • Is RewardedAd returning an error or just not running? – Chiperific Nov 16 '22 at 14:22
  • Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking. – Chiperific Nov 16 '22 at 14:23
  • @Chiperific I want to return a value confirming that ad was shown until end by set variable named adRewardedBoolean to True. But its return false before ad loading – Suleiman Mohammed Fahim Nov 16 '22 at 14:52

0 Answers0