2017-05-22 8 views
0

Ich beende eine Videoanwendung und zeige beim Verlassen der Videoaktivität Interstitial-Anzeigen an. Ich möchte es nur einmal alle X Minuten zeigen, aber es scheint jedes Mal zu zeigen, wenn ich diesen Bildschirm verlasse.Admob: Interstitial-Anzeigen, die jedes Mal angezeigt werden

Dies ist mein Aktivitätscode.

OnCreate:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle b = getIntent().getExtras(); 
    videoId = b.getString("videoId"); 
    setContentView(R.layout.youtube_player); 

    interstitialAd= new InterstitialAd(this); 
    interstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    interstitialAd.loadAd(adRequest); 
    etc... 

OnBackPressed:

@Override 
public void onBackPressed() { 
    ShowAds(); 

} 

private void ShowAds() { 
    if (interstitialAd.isLoaded()) { 
     interstitialAd.show(); 
     interstitialAd.setAdListener(new AdListener() { 
      @Override 
      public void onAdClosed() { 
       super.onAdClosed(); 
       finish(); 
      } 
     }); 
    }else{ 
     super.onBackPressed(); 
    } 
}` 

natürlich ist es so in AdMob gefassten:

Hinweis: meine Anwendung nicht veröffentlicht wird, so zeigt es die "Vorschau" o "Probe". Ich bin mit meiner Anzeigenblock-ID:

enter image description here

Dank,

Antwort

1

zwei Optionen:

  1. Interstitial-Anzeigen zeigen, wenn ich aktuelle Aktivität verlasse, aber nur, wenn ich X Minute abgeschlossen auf momentane Tätigkeit.

    boolean isAdShow=false; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
    
        int minute=1; // X minute 
    
        isAdShow=false; 
        new CountDownTimer(minute*60000,1000) { 
         @Override 
         public void onTick(long millisUntilFinished) { 
    
         } 
    
         @Override 
         public void onFinish() { 
          isAdShow=true; 
         } 
        }.start(); 
    } 
    
    private void ShowAds() { 
    
        if (interstitialAd.isLoaded() && isAdShow) { 
         interstitialAd.show(); 
         interstitialAd.setAdListener(new AdListener() { 
          @Override 
          public void onAdClosed() { 
           super.onAdClosed(); 
           finish(); 
          } 
         }); 
        }else{ 
         super.onBackPressed(); 
        } 
    } 
    
  2. nicht für Benutzer warten Knopf drücken zurück und aktuelle Aktivität zu verlassen, rufen Sie einfach ShowAds() von onFinish() Methode des Timer. zu verwenden 1 st, weil es nicht verletzen AdMob Ad Politik und User Experience

werde ich empfehlen.

EDIT

Sie auch X-mal Zähler verwenden können, wie wenn X = 3 d.h Nach 3 mal rufen von onCreate() Methode machen berechtigt Ad zu zeigen.

public static int adCounter; 
public static final int TIME_COUNTER=3; //Should be always greater than zero 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    adCounter++; 
} 

private void ShowAds() { 

    if (interstitialAd.isLoaded() && adCounter%TIME_COUNTER==0) { 
    interstitialAd.show(); 
    interstitialAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdClosed() { 
      super.onAdClosed(); 
      finish(); 
     } 
    }); 
    }else{ 
    super.onBackPressed(); 
    } 
} 
+0

Danke für Ihre Antwort, ich werde es so bald wie möglich überprüfen! – emboole

+0

Ich habe es versucht und es funktioniert. Das Hauptproblem ist, dass wenn ich ein anderes Video starte, der Counter zurückgesetzt wird, also werden die Anzeigen nie angezeigt, wenn die Counter-Zeit größer ist als das Video. Sollte ich den Zähler auf die Elternaktivität setzen? – emboole

+1

@emboole Ich weiß nicht, was das genaue Modell Ihrer App ist, also kann ich nichts für Ihre Anforderung sagen. Dieser Prototyp basiert auf "Anzeigen nach X Minuten anzeigen", so dass Sie für kleine Videos nie Werbung erhalten, die aber verwaltet werden können, indem Sie die genaue Videodauer erhalten oder auf andere Weise. Sie können 'X Times Counter 'anstelle von' X Minuten' verwenden, bitte überprüfen Sie meine aktualisierte Antwort. – Aryan

Verwandte Themen