gpt4 book ai didi

Android Admob InterstitialAd 已弃用

转载 作者:行者123 更新时间:2023-12-03 13:27:13 24 4
gpt4 key购买 nike

更新后com.google.android.gms:play-services-ads19.7.0它说InterstitialAd & RewardedVideoAd & UnifiedNativeAdView已弃用。
谁能帮忙?

最佳答案

经过快速搜索,我发现我们需要使用

public abstract class InterstitialAd extends Object
代替
public final class InterstitialAd extends Object
所以你需要使用:
com.google.android.gms.ads.interstitial.InterstitialAd
代替:
come.google.android.gms.ads
这就是我们与新包交互的方式:
public class AdManager 
{
private var interstitialAd: InterstitialAd? = null
private var mRewardedVideoAd: RewardedAd? = null
private var currentNativeAd: NativeAd? = null
private var builder: AdLoader.Builder? = null



init {
RequestConfiguration.Builder().setTestDeviceIds(
listOf(
AdRequest.DEVICE_ID_EMULATOR,
"CE88B9A1CB213EEEA19A2F7E54993908"
)
)
}
// Create a full screen content callback.
val fullScreenContentCallback = object : FullScreenContentCallback() {
override fun onAdFailedToShowFullScreenContent(p0: AdError) {
super.onAdFailedToShowFullScreenContent(p0)
}

override fun onAdShowedFullScreenContent() {
super.onAdShowedFullScreenContent()
}

override fun onAdDismissedFullScreenContent() {
super.onAdDismissedFullScreenContent()
interstitialAd = null
mRewardedVideoAd = null
}

}

fun createInterstitialAd(context: Context) {

InterstitialAd.load(
context,
BuildConfig.ADMOB_AD_INTERSTITIAL_UNIT_ID,
request.build(),
object : InterstitialAdLoadCallback() {
override fun onAdLoaded(ad: InterstitialAd) {
interstitialAd = ad
interstitialAd?.fullScreenContentCallback = fullScreenContentCallback
}

})
}
}

fun getFullScreenAd(): InterstitialAd? {
return interstitialAd
}

fun getVideoAd(): RewardedAd? {
return mRewardedVideoAd
}

fun loadRewardedVideoAd(context: Context) {
if (!userManager.getCurrentUser().isPremium) {
val request = AdRequest.Builder()


RewardedAd.load(
context,
BuildConfig.ADMOB_AD_VIDEO_UNIT_ID,
AdRequest.Builder().build(),
object : RewardedAdLoadCallback() {
override fun onAdLoaded(ad: RewardedAd) {
super.onAdLoaded(ad)
mRewardedVideoAd = ad;
mRewardedVideoAd?.fullScreenContentCallback = fullScreenContentCallback;
}
override fun onAdFailedToLoad(p0: LoadAdError) {
super.onAdFailedToLoad(p0)

}
})
}


fun loadNativeAd(context: Activity,adFrame:FrameLayout) {

builder = AdLoader.Builder(context, BuildConfig.ADMOB_AD_UNIT_ID_DIALOG_NATIVE)
builder?.forNativeAd { unifiedNativeAd: NativeAd ->
val adView: View =
context.layoutInflater.inflate(R.layout.ad_unified, null)
val ad = adView as NativeAdView
populateUnifiedNativeAdView(unifiedNativeAd, ad)
adFrame.removeAllViews()
adFrame.addView(ad)
}
val adLoader = builder?.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(i: LoadAdError) {
super.onAdFailedToLoad(i)
Log.e("NativeAdFailed", i.toString() + "")
}
})?.build()
val builder = AdManagerAdRequest.Builder()
adLoader?.loadAd(builder.build())
}
}


private fun populateUnifiedNativeAdView(
nativeAd: NativeAd,
adView: NativeAdView
) {
// You must call destroy on old ads when you are done with them,
// otherwise you will have a memory leak.
if (currentNativeAd != null) currentNativeAd?.destroy()
currentNativeAd = nativeAd

// Set the media view.
adView.mediaView = adView.findViewById<View>(R.id.ad_media) as com.google.android.gms.ads.nativead.MediaView

// Set other ad assets.
adView.headlineView = adView.findViewById(R.id.ad_headline)
adView.bodyView = adView.findViewById(R.id.ad_body)
adView.callToActionView = adView.findViewById(R.id.ad_call_to_action)
adView.iconView = adView.findViewById(R.id.ad_app_icon)
adView.priceView = adView.findViewById(R.id.ad_price)
adView.starRatingView = adView.findViewById(R.id.ad_stars)
adView.storeView = adView.findViewById(R.id.ad_store)
adView.advertiserView = adView.findViewById(R.id.ad_advertiser)

// The headline and media content are guaranteed to be in every UnifiedNativeAd.
(adView.headlineView as TextView).text = nativeAd.headline
nativeAd.mediaContent?.let {
adView.mediaView?.setMediaContent(it)

}

// These assets aren't guaranteed to be in every UnifiedNativeAd, so it's important to
// check before trying to display them.
if (nativeAd.body == null) {
adView.bodyView?.visibility = View.INVISIBLE
} else {
adView.bodyView?.visibility = View.VISIBLE
(adView.bodyView as TextView).text = nativeAd.body
}
if (nativeAd.callToAction == null) {
adView.callToActionView?.visibility = View.INVISIBLE
} else {
adView.callToActionView?.visibility = View.VISIBLE
(adView.callToActionView as TextView).text = nativeAd.callToAction
}
if (nativeAd.icon == null) {
adView.iconView?.visibility = View.GONE
} else {
(adView.iconView as ImageView).setImageDrawable(
nativeAd.icon?.drawable
)
adView.iconView?.visibility = View.VISIBLE
}
if (nativeAd.price == null) {
adView.priceView?.visibility = View.INVISIBLE
} else {
adView.priceView?.visibility = View.VISIBLE
(adView.priceView as TextView).text = nativeAd.price
}
if (nativeAd.store == null) {
adView.storeView?.visibility = View.INVISIBLE
} else {
adView.storeView?.visibility = View.VISIBLE
(adView.storeView as TextView).text = nativeAd.store
}
if (nativeAd.starRating == null) {
adView.starRatingView?.visibility = View.INVISIBLE
} else {
nativeAd.starRating?.toDouble()?.let {
(adView.starRatingView as RatingBar).rating = it.toFloat()
adView.starRatingView?.visibility = View.VISIBLE
}


}
if (nativeAd.advertiser == null) {
adView.advertiserView?.visibility = View.INVISIBLE
} else {
(adView.advertiserView as TextView).text = nativeAd.advertiser
adView.advertiserView?.visibility = View.VISIBLE
}

// This method tells the Google Mobile Ads SDK that you have finished populating your
// native ad view with this native ad.
adView.setNativeAd(nativeAd)
}
}

关于Android Admob InterstitialAd 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65875325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com