Странное поведение Android AdMob SDK

Я использую последнюю версию Android Admob SDK 6.3.1, и первое объявление загружается и отображается на устройстве. Затем по истечении времени обновления, в моем случае 30 секунд, logcat показывает, что объявление было загружено, и новое добавление отображается правильно. Однако через секунду или меньше новое объявление исчезает, оставляя место, где должно быть добавлено, пустым.

Путем проб и ошибок я обнаружил, что если я коснусь пустого места, где должно быть объявление, откроется правильная вторая рекламная ссылка в браузере. Таким образом, добавление кажется каким-то образом скрытым.

Также, если я коснусь нижнего левого угла пустого 2-го объявления, то 2-е объявление будет отображаться правильно.

Я пробовал это как с относительными, так и с линейными макетами и на разных устройствах, но происходит то же самое. Первое объявление показывается корректно, после интервала обновления 2-е и все последующие объявления загружаются и ненадолго отображаются перед тем, как исчезнуть.

Помимо того, что я пробовал разные макеты, я также пытался установить код adview в XML и программно в исходном коде Java.

Тот факт, что я кратко вижу 2-е объявление, подтверждает, что на стороне сервера admob все в порядке, поэтому я думаю, что это макет. Но я пробовал все комбинации, какие только можно придумать, но безуспешно.

Я пробовал установить: android:layout_width="320dp" android:layout_height="50dp" вместо "wrap_content" или "fill_parent".

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
    <com.google.ads.AdView android:id="@+id/adView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     ads:adUnitId="xxxxxxxxxxxxxxxx"
                     ads:adSize="BANNER"
                     ads:loadAdOnCreate="true"/>
    </LinearLayout>

Это то, что у меня есть сейчас, согласно официальной странице admob.

Манифест

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <activity
        android:name="com.google.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

Я третий день пытаюсь решить эту проблему, у кого-нибудь есть какие-нибудь подсказки?


person Mark    schedule 17.04.2013    source источник
comment
Это звучит очень странно. Что говорят журналы? Вы получили обратный вызов onReceiveAd()? Вы случайно не связываетесь с видимостью AdView в своем коде?   -  person Eric Leichtenschlag    schedule 18.04.2013
comment
Эрик, да, я вижу обратный вызов onReceiveAd(). Я даже ненадолго вижу новое объявление, прежде чем оно исчезнет. Все настроено настолько просто, насколько это возможно, поэтому я не устанавливаю цвета и т. Д. Это сводит меня с ума, поскольку это происходит во всех 5 моих приложениях.   -  person Mark    schedule 18.04.2013
comment
Можете ли вы загрузить пример проекта Android Fundamentals, включая последнюю версию SDK и запустите приложение, чтобы убедиться, что это все еще происходит?   -  person Eric Leichtenschlag    schedule 18.04.2013
comment
Это происходит и с моим приложением для Android. И то же самое с типовым проектом.   -  person Dani    schedule 13.06.2013
comment
Также я заметил, что если новая реклама после обновления анимируется, то она не исчезает. Далее, при обновлении со статической рекламой, она снова исчезает.   -  person Dani    schedule 13.06.2013


Ответы (3)


Как вы думаете, это может быть специфично для устройства. Или конкретный API.

person Mark    schedule 13.06.2013

Лучший ответ на этот вопрос заключается в том, что: -

Вы можете настроить анимацию, чтобы сдвинуть баннер вниз, а когда он находится вне поля зрения (настройте прослушиватель onAnimationComplete), вызовите его метод:

Код в действии: - Для видимого: -

setVisibility (Вид.ВИДИМЫЙ);

Для: не скрыть

установитьВидимость(Вид.НЕВИДИМЫЙ);

поэтому он больше не будет занимать место в макете.

person Amitsharma    schedule 04.12.2013

Я почти уверен, что это может произойти, если одно и то же имя идентификатора adview используется более чем в одном XML-файле активности. android:id="@+id/adMob1"

person Mark    schedule 26.09.2014