无法加载Android测试广告

时间:2020-10-10 06:15:13

标签: android kotlin admob ads

我正在使用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)
}

0 个答案:

没有答案