Я понял это недавно. Вы должны знать, что onFailedToReceiveAd
и onFailedToReceiveRefreshedAd
, кажется, имеют особые условия, которые я определил только при тестировании.
onFailedToReceiveAd
будет вызываться только в том случае, если начальный вызов для получения первого объявления для adview
не возвращает никакого объявления. Если объявление получено во время вашего первого запроса объявления, либо с refreshAd
, либо с настройкой интервала, вы никогда не получите это сообщение.
onFailedToReceiveRefreshedAd
не срабатывает, если adView
автоматически обновляется. Кажется, он вызывается только тогда, когда refreshAd
вызывается напрямую (то же самое с onReceivedRefreshedAd
). Смотрите мои правки ниже ...
Рекламный вихрь - лучший вариант, если вы хотите охватить несколько доступных рекламных сетей. Это обрабатывает нормирование на сервере, но я все еще сталкиваюсь с проблемами, где это, кажется, не синхронизировано с admob. К счастью, код adwhirl имеет открытый исходный код, поэтому вы можете посмотреть, что он делает.
Ваш вопрос заставил меня покопаться. Из Android AdWhirl SDK:
public void onReceiveAd(AdView adView) {
Log.d(AdWhirlUtil.ADWHIRL, "AdMob success");
AdWhirlLayout adWhirlLayout = adWhirlLayoutReference.get();
if (adWhirlLayout == null) {
return;
}
adWhirlLayout.adWhirlManager.resetRollover();
adWhirlLayout.handler.post(new ViewAdRunnable(adWhirlLayout, adView));
adWhirlLayout.rotateThreadedDelayed();
}
public void onFailedToReceiveAd(AdView adView) {
Log.d(AdWhirlUtil.ADWHIRL, "AdMob failure");
adView.setAdListener(null);
AdWhirlLayout adWhirlLayout = adWhirlLayoutReference.get();
if (adWhirlLayout == null) {
return;
}
adWhirlLayout.rollover();
}
public void onFailedToReceiveRefreshedAd(AdView adView) {
// Don't call adView.refreshAd so this is never called.
}
public void onReceiveRefreshedAd(AdView adView) {
// Don't call adView.refreshAd so this is never called.
}
}
Это наводит меня на мысль, что механизм получения onFailedToReceiveRefreshedAd действительно может заключаться в настройке собственного рекламного интервала Timer с помощью TimerTask или в другом роде. Если вы сделали это, отключив автоматическое обновление, я думаю, вам повезет больше.