Android InterstitialAd не отображается

Мои приложения использовали следующую InterstitialAd, а ниже приведены стандартные коды, полученные из примеров Google. Однако я хотел бы спросить, почему нет показов рекламы? (приложение правильно показывает тост: On ReceiveAd)

Мой макет main_first_page также имеет рекламный баннер внизу. Повлияет ли это на InterstitialAd?

Спасибо!!

public class StartUp extends Activity implements AdListener {

    private InterstitialAd interstitialAd;   
    AdView adView;
    private static final String LOG_TAG = "IQ!";

       public static final  String MY_PUBLISHER_ID = "abc"; 

       @Override
       public void onCreate(Bundle savedInstanceState) 
       {
          super.onCreate(savedInstanceState); // call the superclass's method
          setContentView(R.layout.main_first_page); // inflate the GUI


          Button ButtonNum= (Button) findViewById(R.id.buttonB);
          Button ButtonHeart= (Button) findViewById(R.id.buttonC);
          Button ButtonMath= (Button) findViewById(R.id.buttonD);             

           interstitialAd = new InterstitialAd(this, MY_PUBLISHER_ID); // Create an ad.  
              interstitialAd.setAdListener(this); // Set the AdListener.
              AdRequest adRequest = new AdRequest();
              adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
              interstitialAd.loadAd(adRequest);       

              if (interstitialAd.isReady()) {interstitialAd.show();} 
              else {Log.d(LOG_TAG, "Interstitial ad was not ready to be shown.");}            
       }
/** Called when an ad is clicked and about to return to the application. */
          @Override
          public void onDismissScreen(Ad ad) {
            Log.d(LOG_TAG, "onDismissScreen");
            Toast.makeText(this, "onDismissScreen", Toast.LENGTH_SHORT).show();
          }

/** Called when an ad was not received. */
          @Override
          public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error) {
            String message = "onFailedToReceiveAd (" + error + ")";
            Log.d(LOG_TAG, message);
            Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
          }

/** Called when an ad is clicked and going to start a new Activity that will
           * leave the application (e.g. breaking out to the Browser or Maps
           * application).
           */
          @Override
          public void onLeaveApplication(Ad ad) {
            Log.d(LOG_TAG, "onLeaveApplication");
            Toast.makeText(this, "onLeaveApplication", Toast.LENGTH_SHORT).show();
          }

/* Called when an Activity is created in front of the app (e.g. an
           * interstitial is shown, or an ad is clicked and launches a new Activity).
           */         
        @Override
        public void onPresentScreen(Ad arg0) {
            // TODO Auto-generated method stub          
        }

/** Called when an ad is received. */
        @Override
          public void onReceiveAd(Ad ad) {
            Log.d(LOG_TAG, "onReceiveAd");
            Toast.makeText(this, "onReceiveAd", Toast.LENGTH_SHORT).show();
        }

person pearmak    schedule 28.11.2012    source источник


Ответы (1)


Для загрузки межстраничного объявления требуется время. Вы проверяете, готово ли оно, сразу после загрузки, так что оно точно еще не будет готово. Проверьте свой вывод logcat, вы, вероятно, увидите то сообщение "Interstitial ad was not ready to be shown.", которое вы зарегистрировали.

Межстраничное объявление не будет готово, пока не будет вызван обратный вызов onReceiveAd(). Вы можете безопасно разместить interstitialAd.show() внутри обратного вызова onReceiveAd(), и межстраничное объявление отобразится сразу.

Другим вариантом использования может быть то, что вы хотите показать промежуточное объявление позже, например, в конце игрового уровня. В этом случае вы должны предварительно загрузить межстраничное объявление в начале уровня и свериться с флагом isReady в конце уровня, чтобы узнать, готово ли межстраничное объявление.

person Eric Leichtenschlag    schedule 28.11.2012
comment
Большое спасибо за вашу помощь! Я не думал о размещении interstitialAd.show() внутри обратного вызова onReceiveAd(), чтобы межстраничное объявление отображалось немедленно! Оно работает! - person pearmak; 29.11.2012
comment
Если вы предварительно загружаете межстраничное объявление (что является отличным способом уменьшить предполагаемую задержку его загрузки), имейте в виду, однако, что это повлияет на ваш CTR (рейтинг кликов). CTR рассчитывается как Number_Of_Clicks/Number_Of_Requests. Если вы предварительно загрузите его, но никогда не покажете (если игрок не дошел до конца уровня), пользователи не смогут щелкнуть, хотя это было запрошено. А CTR используется Google и Рекламодателем для оптимизации кампаний, которые они отправляют в ваши приложения. Поэтому я предлагаю предварительно загрузить его, если вы уверены (или почти уверены), что в конечном итоге оно появится. Это то, чем я занимаюсь. - person Erwan; 29.05.2013
comment
У меня есть вопрос по этому поводу: stackoverflow.com/questions/36389729/ - person Ruchir Baronia; 03.04.2016