Android開発が初めてで、広告を含むアラームアプリを作成しています。ユーザーがアラームを解除した直後に、フルスクリーン広告を挿入する論理的な場所がありました。Androidのフルスクリーン広告(インタースティシャル)は、画面がロックされていると表示されません。
私が遭遇している問題は、アラームが鳴ったときにユーザーのロック画面が通常アクティブであることです。私がWindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
フラグを使用しているため、私の活動とUIがうまく表示されていますが、interstialAd.show()
と呼ぶと、ロック画面がポップアップし、その広告が隠れてしまいます。これは非常にひどいユーザーエクスペリエンスです。なぜなら、次回に携帯電話のロックを解除してどこにも表示されないようになるまで、広告が読み込まれるという実際の兆候がないからです。
マイコード:
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()
:
私は私の活動のonCreate()
方法で広告を初期化
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