2017-05-15 95 views
0

我是Android新手,我正在創建一個包含廣告的鬧鐘應用程序。我想包含全屏廣告的邏輯地點是在用戶解散警報後立即發佈的。Android全屏廣告(插頁式)在屏幕鎖定時不會顯示

我遇到的問題是用戶的鎖定屏幕通常在鬧鐘響起時處於活動狀態。我的活動和用戶界面顯示正常,因爲我使用的是WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED標誌,但當我撥打interstialAd.show()時,鎖定屏幕彈出,並且廣告隱藏在其後面。這是一個非常糟糕的用戶體驗,因爲沒有真正的跡象表明廣告已被加載,直到他/她下次決定解鎖手機時才顯示出來。

我的代碼:

我初始化我的活動的onCreate()方法的廣告:

if (BuildConfig.FLAVOR.equals("free")) { 
     mInterstitialAd = new InterstitialAd(this); 
     mInterstitialAd.setAdUnitId(getString(R.string.alarm_dismissed_interstitial_ad_id)); 

     mInterstitialAd.setAdListener(new AdListener() { 
      @Override 
      public void onAdClosed() { 
       // ad closed or finished so we're done here. 
       Log.d(TAG, "onAdClosed: ad closed... finishing activity"); 
       if (Build.VERSION.SDK_INT >= 21) { 
        finishAndRemoveTask(); 
       } else finish(); 
      } 
     }); 
     if (!mAdLoadStarted) { 
      requestNewInterstitial(); 
     } 
    } 

requestNewInterstitial()

private void requestNewInterstitial(){ 
    AdRequest adRequest = new AdRequest.Builder() 
      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
      .build(); 

    mInterstitialAd.loadAd(adRequest); 
    mAdLoadStarted = true; 
} 

我稱之爲表演方法一旦用戶已駁回鬧鐘:

if (BuildConfig.FLAVOR.equals("free")) { 
     // The dismiss sequence has finished so we can display the full screen ad. 
     if (mInterstitialAd.isLoaded()) { 
      mInterstitialAd.show(); 
     } else { 
      Log.d(TAG, "onDismissFinished: Ad wasn't displayed because it didn't load in time."); 
     } 
    }else{ 
     // No ads for the paid version, we're done here 
     if (Build.VERSION.SDK_INT >= 21) { 
      finishAndRemoveTask(); 
     } else finish(); 
    } 
+1

你想把廣告放在鎖定屏幕上? 「這是一個非常糟糕的用戶體驗」 –

+0

整個體驗通常發生在鎖定屏幕上,因爲這是一個鬧鐘應用程序,所以手機通常在鬧鐘響起時睡着。用戶必須完成一系列活動以證明他已醒來,並解除警報。解僱後,如果他使用應用的免費版本,他會得到一個廣告。 – mark3306

回答

1

我想interstialAd.show()創建一個新的窗口/活動沒有FLAG_SHOW_WHEN_LOCKED

您必須使用設置了此標誌的窗口或在向用戶顯示內容的同一窗口中顯示廣告。

+1

感謝您的回覆。這對我所看到的有意義,但我不知道如何解決它。我瀏覽了可用的InterstitialAd方法,找不到任何設置窗口標記或任何東西來阻止它打開新窗口... – mark3306

+0

嗯......也許插頁式廣告不適合您。嘗試使用FULL_WIDTH和AUTO_HEIGHT(作爲AdSize)的常規AdView並將其顯示在您自己的窗口中。 – selalerer

+1

根據設計,移動廣告SDK會鎖定用於顯示非頁內廣告的活動,因此我無法想象有任何方法可以修改窗口設置。不過,基於@ selalerer的說法,我建議您查看Native Express,它可以在您的佈局中爲您提供自定義原生廣告演示文稿:https://support.google.com/admob/answer/6270315 – RedBrogdon