2014-12-23 35 views
1

我正在整合一個實現了多個聽衆的Android廣告SDK。其中一些聽衆沒有在我的應用程序內發射。例如onAdLoaded會觸發,但是onDisplayed不會。這在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進行了反編譯,以便仔細觀察。軟件包名稱被硬編碼爲一些與非觸發偵聽器相關的條件。我在構建腳本中重構它們的包名,但腳本忽略了字符串。所以自然他們不會因爲軟件包名稱的改變而失敗。