
Я создал составной AdBanner():
@Composable
private fun AdBanner() {
AndroidView(
modifier = Modifier.fillMaxWidth(),
factory = { context ->
AdView(context).apply {
setAdSize(AdSize.BANNER)
adUnitId = context.getString(R.string.banner_ad_unit_id)
loadAd(
AdRequest
.Builder()
.build()
)
}
}
)
}
Я инициализирую рекламу в MainActivity.onCreate():
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
// Initialize the Google Mobile Ads SDK on a background thread.
Log.d(
"MainActivity",
"Initializing Google Mobile Ads SDK..."
)
MobileAds.initialize(this@MainActivity) {}
}
Я проверил и дважды проверил, правильно ли установлен идентификатор моего приложения в теге в AndroidManifest.xml и что идентификатор моего рекламного блока правильный. Что еще я могу проверить, чтобы устранить эту неполадку?
Изменить (дополнительная информация):
- Я использую тест рекламный блок с идентификатором баннера фиксированного размера отсюда:
ca-app-pub-3940256099942544/6300978111 - Я добавил свой телефон в качестве тестового устройства в свою учетную запись Ad Mob. Я настроил встряхивание, чтобы просмотреть Инспектор объявлений, который показывает, что объявления не заполнены:

- Logcat показывает одну ошибку:
Неверный идентификатор 0x00000000.
Это не кажется очень полезным, поскольку не содержит абсолютно никакой дополнительной информации. Недостаточно даже информации, чтобы определить, ошибка ли это рекламного баннера или что-то совсем другое. - Я добавил AdListener:
object : AdListener() {
override fun onAdFailedToLoad(p0: LoadAdError) {
Log.d(
"AdBanner",
"Failed to load ad: ${p0.message}"
)
}
override fun onAdLoaded() {
Log.d(
"AdBanner",
"Ad loaded"
)
}
override fun onAdClicked() {
Log.d(
"AdBanner",
"Ad clicked"
)
}
override fun onAdClosed() {
Log.d(
"AdBanner",
"Ad closed"
)
}
override fun onAdImpression() {
Log.d(
"AdBanner",
"Ad impression"
)
}
override fun onAdOpened() {
Log.d(
"AdBanner",
"Ad opened"
)
}
override fun onAdSwipeGestureClicked() {
Log.d(
"AdBanner",
"Ad swipe gesture clicked"
)
}
}
Это дает следующий результат:
Объявление загружено
Показ объявления
Это выглядит разумно и соответствует моим ожиданиям при загрузке рекламы. Функция onAdFailedToLoad() не выводит никаких результатов.
Изменить 2:
Я использую AdBanner(), который можно компоновать следующим образом:
Scaffold(
// ...
) { innerPadding ->
Column(modifier = Modifier.fillMaxSize()) {
AdBanner()
BaseballCardList(
navController = navController,
cards = stateList,
onCardChanged = { index, card -> stateList[index] = card },
contentPadding = innerPadding
)
// ...
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... oading-ads