我是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();
}
你想把广告放在锁定屏幕上? “这是一个非常糟糕的用户体验” –
整个体验通常发生在锁定屏幕上,因为这是一个闹钟应用程序,所以手机通常在闹钟响起时睡着。用户必须完成一系列活动以证明他已醒来,并解除警报。解雇后,如果他使用应用的免费版本,他会得到一个广告。 – mark3306