J'ai essayé des choses à partir de nombreux blogs mais aucun n'a donné de solution étape par étape. Dois-je modifier quelque chose sur le site AdMob? J'ai créé le site à partir de l'option sit sit/app sous l'onglet Sites et applications.
J'ai utilisé ce code:
interstitial = new InterstitialAd(this, "MyAdMobID");
// Set Ad Listener to use the callbacks below
interstitial.setAdListener(this);
// Create ad request
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
// Begin loading your interstitial
interstitial.loadAd(adRequest);
adRequest.setTesting(true);
En utilisant le dernier Android framework, j'ai compris que je devais appeler la fonction load () chaque fois que l'annonce était fermée.
import com.google.Android.gms.ads.*;
import Android.os.Handler;
import Android.os.Looper;
import Android.app.Activity;
class MyActivity extends Activity implements AdListener {
private InterstitialAd adView; // The ad
private Handler mHandler; // Handler to display the ad on the UI thread
private Runnable displayAd; // Code to execute to perform this operation
@Override
public void onCreate(Bundle savedInstanceState) {
adView = new InterstitialAd(mContext);
adView.setAdUnitId("ca-app-pub-XXXXXXXXXX");
adView.setAdListener(this);
mHandler = new Handler(Looper.getMainLooper());
displayAd = new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (adView.isLoaded()) {
adView.show();
}
}
});
}
};
loadAd();
}
@Override
public void onAdClosed() {
loadAd(); // Need to reload the Ad when it is closed.
}
void loadAd() {
AdRequest adRequest = new AdRequest.Builder()
//.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
// Load the adView object witht he request
adView.loadAd(adRequest);
}
//Call displayInterstitial() once you are ready to display the ad.
public void displayInterstitial() {
mHandler.postDelayed(displayAd, 1);
}
}
Contrairement aux bannières, les annonces insterstitielles ne s'affichent pas automatiquement une fois chargées. Vous devrez écouter le rappel onReceiveAd()
d'AdMob, et à l'intérieur de ce rappel, appeler interstital.show()
pour afficher votre interstitiel.
public YourActivity extends Activity implements AdListener {
...
@Override
public void onReceiveAd(Ad ad) {
Log.d("OK", "Received ad");
if (ad == interstitial) {
interstitial.show();
}
}
}
Découvrez un exemple de code ici . Cet exemple montrera l'interstitiel dès sa réception. Alternativement, vous souhaiterez peut-être attendre un moment approprié pour afficher l'interstitiel, comme à la fin d'un niveau de jeu, et vous pouvez vérifier interstitial.isReady()
pour voir si vous pouvez afficher l'interstitiel.
Vous ne pouvez plus implémenter AdListener, je l'ai utilisé de cette façon:
final InterstitialAd mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id));
AdRequest adRequestInter = new AdRequest.Builder().build();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
mInterstitialAd.show();
}
});
mInterstitialAd.loadAd(adRequestInter);
Placez votre propre ID dans strings.xml nommé interstitial_ad_unit_id, ou remplacez
getResources().getString(R.string.interstitial_ad_unit_id)
avec votre ID.
Je pense que cet exemple de code vous aidera.
Comment ajouter des annonces interstitielles AdMob dans vos Android
Dans cet exemple, il vous montre tout le code source. Et il fournit également des solutions aux erreurs courantes. Par exemple, solution d'erreur onFailedToReceiveAd et aucune annonce n'a renvoyé de solution. Vous pouvez également télécharger le code source à partir de là.
Appelez cette fonction à l'ouverture de l'application:
InterstitialAd interstitial;
public void AdMob() {
AdRequest adRequest = new AdRequest.Builder().addTestDevice("YOUR_TEST_DEVICE_ID").build();
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId("YOUR_AD_ID");
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
//Ads loaded
}
@Override
public void onAdClosed() {
super.onAdClosed();
//Ads closed
}
@Override
public void onAdFailedToLoad(int errorCode) {
super.onAdFailedToLoad(errorCode);
//Ads couldn't loaded
}
});
interstitial.loadAd(adRequest);
}
Ensuite, vous pouvez diffuser des annonces:
if (interstitial.isLoaded()){
interstitial.show();
}
Vous devez préparer des annonces avant de les diffuser. Cela a pris 3-5 secondes en fonction de la vitesse Internet de l'appareil.
Pour info, la méthode interstitial.isReady()
n'est plus supportée. C'est la méthode correcte:
if (interstitial.isLoaded()) {
interstitial.show();
}
ajout de bannières et d'annonces interstitielles:
AdView mAdView;
InterstitialAd interstitialAd;
ProgressDialog pd;
void showAds(){
if(interstitialAd.isLoaded()){
interstitialAd.show();
}
}
public void initAds(){
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
interstitialAd=new InterstitialAd(this);
interstitialAd.setAdUnitId(getResources().getString(R.string.inetial3));
AdRequest adRequest1=new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest1);
}
et en XML:
<com.google.Android.gms.ads.AdView
xmlns:ads="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/adView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id2"
Android:layout_gravity="bottom|center">
</com.google.Android.gms.ads.AdView>
InterstitialAd mInterstitialAd;
//To load InterstitialAd ads
//app_id for test ca-app-pub-3940256099942544~3347511713
//full_id for test ca-app-pub-3940256099942544/1033173712
MobileAds.initialize(this, getString(R.string.app_id));
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getString(R.string.full_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Load the next interstitial
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});
//To show ads
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.");
}
Essayez ceci dans MainActivity.Java
private InterstitialAd interstitial;
// Initialize the Mobile Ads SDK
MobileAds.initialize(this, getString(R.string.admob_app_id));
AdRequest adIRequest = new AdRequest.Builder().build();
// Prepare the Interstitial Ad Activity
interstitial = new InterstitialAd(MainActivity.this);
// Insert the Ad Unit ID
//add admob_interstitial_id unit id in string file
interstitial.setAdUnitId(getString(R.string.admob_interstitial_id));
// Interstitial Ad load Request
interstitial.loadAd(adIRequest);
// Prepare an Interstitial Ad Listener
interstitial.setAdListener(new AdListener()
{
public void onAdLoaded()
{
// Call displayInterstitial() function when the Ad loads
displayInterstitial();
}
});
}
public void displayInterstitial()
{
// If Interstitial Ads are loaded then show else show nothing.
if (interstitial.isLoaded()) {
interstitial.show();
}
}