我正在使用OI必须处理广告并使用测试ID加载广告的Android应用程序,我已经在代码中实现了所有与广告相关的工作,但是由于我在移动设备中运行应用程序而无法加载广告。 我已按照教程进行操作,并在其中添加了Plays服务和Internet许可... 我还在Android清单中添加了测试ID
这是我用来在应用程序中加载广告的代码 。 我声明了权限的清单文件和权限的元数据:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET"/>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
这是我要加载广告的主要活动,看起来像...我在onCreate上初始化了测试ID
MobileAds.initialize(this,"ca-app-pub-3940256099942544~3347511713")
loadAdmobNativeAd()
这里是加载广告的加载方法
internal var nativeAd: UnifiedNativeAd? = null
private fun loadAdmobNativeAd() {
val frameLayout: FrameLayout = findViewById(R.id.native_)
val builder = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
builder.forUnifiedNativeAd { unifiedNativeAd ->
// OnUnifiedNativeAdLoadedListener implementation.
// You must call destroy on old ads when you are done with them,
// otherwise you will have a memory leak.
if (nativeAd != null) {
nativeAd?.destroy()
}
nativeAd = unifiedNativeAd
val adView = layoutInflater
.inflate(R.layout.native_ad_layout, null) as UnifiedNativeAdView
populateUnifiedNativeAdView(unifiedNativeAd, adView)
frameLayout.removeAllViews()
frameLayout.addView(adView)
}
builder.withAdListener(object: AdListener() {
override fun onAdFailedToLoad(p0: Int) {
Log.d(
"checkads","error1"
)
super.onAdFailedToLoad(p0)
}
})
val adLoader = builder.build()
adLoader.loadAd(AdRequest.Builder().build())
}
这是我的填充方法,用于填充声明的广告xml
属性。
private fun populateUnifiedNativeAdView(
unifiedNativeAd: UnifiedNativeAd?,
adView: UnifiedNativeAdView
) {adView.headlineView = adView.findViewById(R.id.ad_headline)
adView.advertiserView = adView.findViewById(R.id.ad_advertiser)
adView.mediaView = adView.findViewById(R.id.ad_media)
adView.callToActionView = adView.findViewById(R.id.btn_install)
adView.iconView = adView.findViewById(R.id.adv_icon)
adView.bodyView = adView.findViewById(R.id.ad_body)
if (unifiedNativeAd != null) {
adView.mediaView.setMediaContent(unifiedNativeAd.mediaContent)
}
if (unifiedNativeAd != null) {
adView.ad_headline.text = unifiedNativeAd.headline
}
if (unifiedNativeAd != null) {
if (unifiedNativeAd.body == null) {
adView.bodyView.visibility = View.INVISIBLE
} else {
adView.ad_body.text = unifiedNativeAd.body
adView.bodyView.visibility = View.VISIBLE
}
if (unifiedNativeAd.advertiser == null) {
adView.advertiserView.visibility = View.INVISIBLE
} else {
adView.ad_advertiser.text = unifiedNativeAd.advertiser
adView.advertiserView.visibility = View.VISIBLE
}
if (unifiedNativeAd.icon == null) {
adView.iconView.visibility = View.GONE
} else {
adView.iconView.visibility = View.VISIBLE
}}
adView.setNativeAd(unifiedNativeAd)
}