2017-05-15 62 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