问题描述
我的 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
这让我很困惑。这就像 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 货币化管理器上启用测试模式。