2014-12-23 4 views
1

Я интегрирую SDK для Android объявлений, который реализует несколько слушателей. Некоторые из этих слушателей не стреляют в мое приложение. Например, onAdLoaded будет срабатывать, но onAdDisplayed не будет. Это отлично работает в примере приложения, которое предоставляется с SDK, что приводит к мысли, что это проблема интеграции. Однако я не могу найти ничего, что вызывает эту ошибку. Это абсолютно странное поведение, с которым я никогда не сталкивался. Я знаю, что здесь хватаюсь за соломинку, но гипотетически говоря, что может быть причиной того, что некоторые слушатели не регистрируются, пока другие? Как я могу отладить это?Некоторые слушатели не стреляют

Вот код:

 ad = new InterstitialAd(lastActivity, placementId); 
     ad.setAdListener(new InterstitialAdListener() { 
      //doesn't fire 
      @Override 
      public void onInterstitialDisplayed(Ad ad) { 
       Log.e(TAG, "INTERSTITIAL DISPLAYED"); 
       Toast.makeText(lastActivity, "onInterstitialDisplayed", Toast.LENGTH_SHORT).show(); 
      } 

      //doesn't fire 
      @Override 
      public void onInterstitialDismissed(Ad ad) { 
       Log.e(TAG, "INTERSTITIAL DISMISSED"); 
       Toast.makeText(lastActivity, "onInterstitialDismissed", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onError(Ad ad, AdError adError) { 
       Log.e(TAG, "ERROR! " + adError.getErrorMessage()); 
       Toast.makeText(lastActivity, "onError", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onAdLoaded(Ad ad) { 
       Log.e(TAG, "AD LOADED!"); 
       AdAdapter.this.ad.show(); 
       Toast.makeText(lastActivity, "onAdLoaded", Toast.LENGTH_SHORT).show(); 
      } 

      //doesn't fire 
      @Override 
      public void onAdClicked(Ad ad) { 
       Log.e(TAG, "AD CLICKED!"); 
       Toast.makeText(lastActivity, "onAdClicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     ad.loadAd(); 
+0

Если у вас возникли проблемы с onAdLoaded, это потенциально может быть проблемой отображения, если SDK не считает, что объявление полностью отображается, это не будет вызываться. Можете ли вы опубликовать XML? – Shooky

+0

Вы используете 'com.google.android.gms.ads.InterstitialAd'? Если это так, 'setAdListener' ожидает объект AdListener, который не определяет' onInterstitialDisplayed' или 'onInterstitialDismissed', поэтому он объясняет, почему они никогда не запускаются ... https://developer.android.com/reference/com /google/android/gms/ads/InterstitialAd.html – blad

ответ

1

я, наконец, понял, почему. Я декомпилировал SDK, чтобы поближе посмотреть. Название пакета было жестко записано в некоторые из условий, которые относятся к слушателям без обмана. Я реорганизую их имя пакета в моем скрипте сборки, но сценарий игнорирует строки. Поэтому, естественно, они не будут запускаться, потому что имя пакета изменилось.

Смежные вопросы