Android 中的 AdMob Facebook 中介不起作用

问题描述

我的 ad mob 帐户受到限制,我在尝试加载广告时收到错误 I/Ads: Ad Failed to load : 3

我了解到,即使广告暴民帐户受到限制,中介网络仍然可以正常工作,因此我正在尝试添加到中介 Facebook 受众网络 (FAN),但遇到了问题

我按照以下官方指南创建了一个 facebook 企业帐户并喜欢 AdMob: https://developers.google.com/admob/android/mediation/facebook#step_3_import_the_facebook_audience_network_sdk_and_adapter

然后我按照本指南来测试中介网络: https://developers.google.com/admob/android/mediation-test-suite

我在 ad mob ad FAN 上添加了我的设备作为测试设备。

如日志中所述,我还添加

AdSettings.addTestDevice(deviceHash)MobileAds.setRequestConfiguration(configuration)

但是当运行应用程序并使用中介测试工具(见图片)加载 Facebook 广告时,我仍然收到错误消息 I/Ads: Ad Failed to load : 3

enter image description here

这让我很困惑。这就像 Facebook 中介没有考虑在内!我该如何调试更多?

附注:

  • 在尝试加载广告之前,我已在 facebook 上选择了测试广告的类型
  • 我已安装并登录了 Facebook 应用

顺便说一下,我已经尝试直接集成 facebook 广告 sdk,我可以通过我想使用中介来加载测试广告

这是我的 MainActivity 代码

package com.perlabianca.buongiornobuonanotte

import android.os.Bundle
import android.util.displayMetrics
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.onNavDestinationSelected
import com.facebook.ads.AdSettings
import com.google.android.ads.mediationtestsuite.MediationTestSuite
import com.google.android.gms.ads.*
import com.perlabianca.buongiornobuonanotte.BuildConfig.AD_UNIT_ID_BANNER
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

class MainActivity : AppCompatActivity() {
    private lateinit var adView: AdView
    private lateinit var configuration: RequestConfiguration
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MediationTestSuite.launch(this);

        AdSettings.addTestDevice("0e48fb1f-dd5c-4102-8d93-be6fcc0955dc");

        configuration = RequestConfiguration.Builder()
            .setTestdeviceids(Arrays.asList("1F642237A220D0BF1833E04E81F1CEBE")).build()
        MobileAds.setRequestConfiguration(configuration)


        adView = AdView(this)
        adContainer.addView(adView)
        loadBanner()
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        val inflater: MenuInflater = menuInflater
        inflater.inflate(R.menu.options_menu,menu)
        return true
    }

    override fun onoptionsItemSelected(item: MenuItem): Boolean {
        // Handle item selection
        return item.onNavDestinationSelected(findNavController(R.id.nav_host_fragment)) || super.onoptionsItemSelected(
            item
        )
    }

    // Determine the screen width (less decorations) to use for the ad width.
    // If the ad hasn't been laid out,default to the full screen width.
    private val adSize: AdSize
        get() {
            val display = windowManager.defaultdisplay
            val outMetrics = displayMetrics()
            display.getMetrics(outMetrics)

            val density = outMetrics.density

            var adWidthPixels = adContainer.width.toFloat()
            if (adWidthPixels == 0f) {
                adWidthPixels = outMetrics.widthPixels.toFloat()
            }

            val adWidth = (adWidthPixels / density).toInt()
            return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this,adWidth)
        }

    private fun loadBanner() {
        adView.adUnitId = AD_UNIT_ID_BANNER

        adView.adSize = adSize

        val adRequest = AdRequest
            .Builder()
            .build()

        print("is test-------")
        println(adRequest.isTestDevice(this))
        // Start loading the ad in the background.
        adView.loadAd(adRequest)
    }

}

解决方法

在 facebook 货币化管理器上启用测试模式。

enter image description here