2017-05-15 15 views
0

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(); 
    } 
+1

ロック画面に広告を挿入しますか? 「これはかなりひどいユーザーエクスペリエンスです」 –

+0

これはアラームアプリであるため、通常はロック画面で発生します。そのため、アラームがオフになると通常はスリープ状態になります。ユーザは、彼が起きていることを証明するために一連の活動を完了し、警報を却下しなければならない。解雇された後、彼はアプリの無料版を使用している場合、彼は広告を取得します。 – mark3306

答えて

1

interstialAd.show()FLAG_SHOW_WHEN_LOCKEDなしで新しいウィンドウ/アクティビティを作成すると思います。

このフラグが設定されているウィンドウを使用するか、コンテンツをユーザーに表示していたのと同じウィンドウで広告を表示する必要があります。

+1

お返事ありがとうございます。これは、私が見ているものには意味をなさないが、私はそれをどのように修正するか分からない。私は利用可能なInterstitialAdメソッドを見てきましたが、ウィンドウフラグや何か新しいウィンドウを開くことができないように設定するためのものは何も見つかりませんでした。 – mark3306

+0

Hmmm ...おそらくインタースティシャル広告はあなたにとって適切な広告ではありません。 FULL_WIDTHとAUTO_HEIGHT(AdSizeとして)を使用して通常のAdViewを試し、自分のウィンドウに表示してください。 – selalerer

+1

モバイル広告SDKは、インタースティシャル広告の表示に使用するアクティビティをかなり緊密にロックするため、ウィンドウ設定を変更する方法はないと考えられます。 @selalererが語ったことを踏まえて、Native Expressを見てみましょう.Native Expressはレイアウト内にカスタムのネイティブ広告プレゼンテーションを提供します:https://support.google.com/admob/answer/6270315 – RedBrogdon

関連する問題