2017-09-01 5 views
0

で実行し続ける:AdMobのRewardedVideoAdは、だから私は、フィールド持っているバックグラウンド

private lateinit var adMobAd: RewardedVideoAd

を、私はのonCreate()メソッドでそれを初期化:私はonDestroy(に破壊

adMobAd = MobileAds.getRewardedVideoAdInstance(this)

)方法:

public override fun onDestroy() { adMobAd.destroy(this) super.onDestroy() }

ボタンをクリックして広告を読み込んだ後、すぐにアクティビティを終了すると、数秒後に広告が表示されます(onRewardedVideoAdLoaded()コールバックに広告が表示されます)。特に広告がスキップできない場合は、非常に悪い行為です。それが完了するとコールバックも呼び出すので、私はもちろんクラッシュします。また、私は

implementation 'com.google.ads.mediation:adcolony:3.1.2.0' implementation 'com.google.ads.mediation:tapjoy:11.11.0.0' implementation 'com.google.ads.mediation:unity:2.1.0.0'

ように私の報酬を動画にいくつかのメディエーションを使用してどのように私はこのケースを防ぐことができますか?

答えて

1

フラグを追加して、広告を表示する前に広告が最初に利用可能かどうか確認できますか?ボタンクリックで

fun onDestroy(){ isDestroyed =true ...} 

広告がすでにロードされているか、活動が破壊されるようにキューイングされている場合は、確認してください。

if(admobAd.isLoaded() && !isDestroyed){ admobAd.show() } 
+0

もちろん私はそれを行うことができます。ドキュメントによると、私の実装はうまくいくはずなので、私はもっと賛辞を言う答えを期待しました。さらに、onDestroy()メソッドは呼び出されることが保証されておらず、返信には 'activity.isDestroyed()' –

0

OnDestroyありえないので、それらのいずれかが呼び出されます、いつもと呼ばれる、そうもOnPauseを使用しています。アクティビティで、onPauseメソッドで広告を破棄します。このコードを追加:

@Override 
protected void onPause() { 
    super.onPause(); 
    adMobAd.destroy(this); 
} 

希望します。

+0

という感謝の意がありますが、単純に画面を最小化すると広告を破棄したくありません。そのため、 'adMobAd.pause(this)'メソッドは 'onPause()'メソッドで呼び出されます。 –

+0

'onResume'メソッドを追加してロードし、' onResume'メソッドで表示します – MrAppMachine

+0

これは、広告をリクエストして読み込み、ユーザが画面を最大化するたびに表示することを意味します。これは非常に悪いパターンです。このため、 'onResume()'メソッドでは 'adMobAd.resume(this)'を呼び出す必要があります。 –

関連する問題