AdListener MoPub «onInterstitialFailed» не работает в автономном режиме
Когда мое устройство подключено к Интернету / подключается к Интернету. Тогда работайте нормально.
Я показываю MoPub
Interstitial ad
между
activities
.
Ситуация: если
ad
not loaded
или же
failed
тогда я хочу использовать
Intent
туда двигаться дальше
activity
. Но это
adListener
не работает, когда я не в сети.
Межстраничное
mInterstitial.load()
в
onCreate
метод
Когда пользователь нажимает кнопку "Назад", вызывается межстраничное объявление.
@Override
public void onBackPressed() {
if (mInterstitial.isReady() && mInterstitial!=null){
Log.e(TAG, "funMoPubInterstitialAd: is ready NOWWW" );
funMoPubInterstitialAd();
} else {
Toast.makeText(this, "Connection timed out.", Toast.LENGTH_SHORT).show();
RanksActivity.super.onBackPressed();
//e.printStackTrace();
}
//super.onBackPressed();
}
функция межстраничного вызова
private void funMoPubInterstitialAd(){
Log.e(TAG, "funMoPubInterstitialAd: inside fun of ad listener" );
mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() {
@Override
public void onInterstitialLoaded(MoPubInterstitial moPubInterstitial) {
Log.e(TAG, "onInterstitialLoaded: ad loaded and show" );
mInterstitial.show();
}
@Override
public void onInterstitialFailed(MoPubInterstitial moPubInterstitial, MoPubErrorCode moPubErrorCode) {
Log.e(TAG, "onInterstitialFailed: Ad failed to load" );
RanksActivity.super.onBackPressed();
}
@Override
public void onInterstitialShown(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialClicked(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialDismissed(MoPubInterstitial moPubInterstitial) {
//customProgressDialogForAd.dismiss();
RanksActivity.super.onBackPressed();
}
});
}
Проблема: если вы начнете это действие через Интернет, то реклама загрузится (), затем Интернет отключится, а затем
onInterstitialFailed
не работает.
Если есть показ рекламы в Интернете, тогда нет проблем. Если объявление не показывает, функция застряла здесь.
Любое решение: пожалуйста
1 ответ
Здесь, если полное решение вашей проблемы и лучшие практики, чтобы показать
MoPub
Interstitial ad
.
Существует два способа / метода / типа вызова MoPub.
1-й способ: прямой звонок
adListener
mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() { .... }
2-й способ: позвонить в MoPub через
implements
в нашем
Activity class
public class QuestionActivity extends AppCompatActivity implements MoPubInterstitial.InterstitialAdListener { ... }
В настоящее время не работает в 1 - ом пути из
AdListener
когдаOffline/No internet
в устройстве. Но работает по 2-му способу / типу .Итак, мы будем использовать метод 2-го типа для проверки того, что межстраничное объявление не загрузилось или нет? через логическое значение в
onInterstitialFailed
.
Здесь полная душа
public class QuestionActivity extends AppCompatActivity implements MoPubInterstitial.InterstitialAdListener {
// mopub interstitial
private MoPubInterstitial mInterstitial;
// mopub interstitial check , ad load to failed or not
private boolean mInterstitialAdFailedToLoad;
//for custom dialog before interstitial ad
CustomProgressDialogForAd customProgressDialogForAd;
@Override
public void onBackPressed() {
customProgressDialogForAd.show(getSupportFragmentManager(),"before interstitial");
try {
if (!mInterstitialAdFailedToLoad){
// call this 1st way ad listener if ad not failed to load
funInterstitialAdListener();
}
else {
customProgressDialogForAd.dismiss();
QuestionActivity.super.onBackPressed();
//e.printStackTrace();
}
} catch (Exception e){
QuestionActivity.super.onBackPressed();
}
//super.onBackPressed();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_question);
// funCall Mopub initialize
SdkConfiguration.Builder sdkConfiguration = new SdkConfiguration.Builder(getResources().getString(R.string.moPubSdkConfigAdId_justBannerAd));
MoPub.initializeSdk(this, sdkConfiguration.build(), initSdkListener());
// progressbar for interstitial ad
customProgressDialogForAd=new CustomProgressDialogForAd();
}
//===========Mopub ads initialization
private SdkInitializationListener initSdkListener(){
return new SdkInitializationListener() {
@Override
public void onInitializationFinished() {
mInterstitial = new MoPubInterstitial(QuestionActivity.this,getResources().getString(R.string.moPub_interstitialAdId));
mInterstitial.setInterstitialAdListener(QuestionActivity.this);
mInterstitial.load();
}
};
}
// fun of mopub implemented adlistener
@Override
public void onInterstitialLoaded(MoPubInterstitial moPubInterstitial) {
Log.d(TAG, "onInterstitialLoaded: loaded");
}
@Override
public void onInterstitialFailed(MoPubInterstitial moPubInterstitial, MoPubErrorCode moPubErrorCode) {
// this fun also execute when device NOT CONNECTED WITH Internet
// using this just because of Mopub sdk adListener this fun not work.
// So we use boolean to know , ad failed to load or not
mInterstitialAdFailedToLoad = true;
// this function only for in implement AdListener , so we using here
Log.d(TAG, "onInterstitialFailed: Ad failed to load");
}
@Override
public void onInterstitialShown(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialClicked(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialDismissed(MoPubInterstitial moPubInterstitial) {
}
// ====== mopub ad listener
public void funInterstitialAdListener(){
mInterstitial.setInterstitialAdListener(new MoPubInterstitial.InterstitialAdListener() {
@Override
public void onInterstitialLoaded(MoPubInterstitial moPubInterstitial) {
mInterstitial.show();
customProgressDialogForAd.dismiss();
}
@Override
public void onInterstitialFailed(MoPubInterstitial moPubInterstitial, MoPubErrorCode moPubErrorCode) {
customProgressDialogForAd.dismiss();
QuestionActivity.super.onBackPressed();
// PROBLEM : This fun not work when device have no Internet , So we use boolean in implements
}
@Override
public void onInterstitialShown(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialClicked(MoPubInterstitial moPubInterstitial) {
}
@Override
public void onInterstitialDismissed(MoPubInterstitial moPubInterstitial) {
Log.d(TAG, "onInterstitialDismissed: Done");
QuestionActivity.super.onBackPressed();
}
});
}
// activity life cycle
@Override
protected void onDestroy() {
if (mInterstitial!=null){
mInterstitial.destroy();
}
super.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
MoPub.onPause(this);
}
@Override
protected void onStop() {
super.onStop();
MoPub.onStop(this);
}
@Override
protected void onResume() {
super.onResume();
MoPub.onResume(this);
}
}
Удачного кодирования :)