Aggiunta di inserzioni interstitial a un'app Android

Audience Network ti consente di monetizzare le tue app per Android con le inserzioni di Facebook. Un'inserzione interstitial è un'inserzione a schermo intero che puoi mostrare nella tua app. Di solito le inserzioni interstitial vengono mostrate quando c'è una transizione nella tua app. Ad esempio, dopo aver terminato un livello in un gioco o dopo aver caricato una storia in un'app di notizie.

Prima di proseguire, assicurati di aver consultato le guide Primi passi di Audience Network e Primi passi su Android.

Istruzioni dettagliate

Passaggio 1: inizializzazione delle inserzioni interstitial nella tua attività

Passaggio 2: visualizzazione delle inserzioni interstitial nella tua attività

Inizializzare l'SDK di Audience Network

Questo metodo è stato aggiunto nell'SDK Android Audience Network versione 5.1.

L'inizializzazione esplicita dell'SDK Audience Network per Android è obbligatoria a partire dalla versione 5.3.0. Consulta questo documento per informazioni su come inizializzare l'SDK Audience Network per Android.

Prima di creare un oggetto pubblicitario e caricare le inserzioni, devi inizializzare l'SDK di Audience Network. È consigliabile eseguire questa operazione all'avvio dell'app.

public class YourApplication extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();
        // Initialize the Audience Network SDK
        AudienceNetworkAds.initialize(this);       
    }
    ...
}

Passaggio 1: inizializzazione delle inserzioni interstitial nella tua attività

Aggiungi il codice di seguito nella parte superiore della tua attività per importare l'SDK Facebook Ads:

import com.facebook.ads.*;

Inizializza l'InterstitialAd.

private InterstitialAd interstitialAd;

@Override
public void onCreate(Bundle savedInstanceState) {
...
  // Instantiate an InterstitialAd object. 
  // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
  // now, while you are testing and replace it later when you have signed up.
  // While you are using this temporary code you will only get test ads and if you release
  // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
  interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
...  

Passaggio 2: visualizzazione delle inserzioni interstitial

Scenario 1: crea un InterstitialAdListener, carica l'inserzione e mostrala subito dopo che è stata caricata correttamente.

public class InterstitialAdActivity extends Activity {

    private final String TAG = InterstitialAdActivity.class.getSimpleName();
    private InterstitialAd interstitialAd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Instantiate an InterstitialAd object.
        // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
        // now, while you are testing and replace it later when you have signed up.
        // While you are using this temporary code you will only get test ads and if you release
        // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
        interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
        // Create listeners for the Interstitial Ad
        InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
            @Override
            public void onInterstitialDisplayed(Ad ad) {
                // Interstitial ad displayed callback
                Log.e(TAG, "Interstitial ad displayed.");
            }

            @Override
            public void onInterstitialDismissed(Ad ad) {
                // Interstitial dismissed callback
                Log.e(TAG, "Interstitial ad dismissed.");
            }

            @Override
            public void onError(Ad ad, AdError adError) {
                // Ad error callback
                Log.e(TAG, "Interstitial ad failed to load: " + adError.getErrorMessage());
            }

            @Override
            public void onAdLoaded(Ad ad) {
                // Interstitial ad is loaded and ready to be displayed
                Log.d(TAG, "Interstitial ad is loaded and ready to be displayed!");
                // Show the ad
                interstitialAd.show();
            }

            @Override
            public void onAdClicked(Ad ad) {
                // Ad clicked callback
                Log.d(TAG, "Interstitial ad clicked!");
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                // Ad impression logged callback
                Log.d(TAG, "Interstitial ad impression logged!");
            }
        };

        // For auto play video ads, it's recommended to load the ad
        // at least 30 seconds before it is shown
        interstitialAd.loadAd(
                interstitialAd.buildLoadAdConfig()
                        .withAdListener(interstitialAdListener)
                        .build());
    }
}

Le inserzioni interstitial hanno creatività di dimensioni maggiori, quindi una buona pratica è chiamare loadAd(... ) in anticipo e poi chiamare show() al momento opportuno.

Scenario 2: visualizza l'inserzione alcuni secondi o minuti dopo che è stata caricata correttamente. Devi controllare se l'inserzione è stata invalidata prima della visualizzazione.

In caso di mancata visualizzazione dell'inserzione subito dopo che è stata caricata, lo sviluppatore è responsabile di controllare se l'inserzione è stata o meno invalidata. Una volta caricata correttamente, l'inserzione sarà valida per 60 minuti. Non riceverai alcun pagamento se mostri un'inserzione invalidata.

Prendi spunto dal codice seguente, ma non copiarlo nel progetto poiché è solo un esempio:

public class InterstitialAdActivity extends Activity {

    private InterstitialAd  interstitialAd ;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Instantiate an InterstitialAd object. 
        // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
        // now, while you are testing and replace it later when you have signed up.
        // While you are using this temporary code you will only get test ads and if you release
        // your code like this to the Google Play your users will not receive ads (you will get a no fill error).
        interstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID");
        InterstitialAdListener interstitialAdListener = new InterstitialAdListener() {
            ...
        };
        // load the ad
        interstitialAd.loadAd(
                interstitialAd.buildLoadAdConfig()
                        .withAdListener(interstitialAdListener)
                        .build());
    }

    private void showAdWithDelay() {
       /**
        * Here is an example for displaying the ad with delay;
        * Please do not copy the Handler into your project
       */
       // Handler handler = new Handler();
       handler.postDelayed(new Runnable() {
           public void run() {
                // Check if interstitialAd has been loaded successfully
               if(interstitialAd == null || !interstitialAd.isAdLoaded()) {
                   return;
               }
                // Check if ad is already expired or invalidated, and do not show ad if that is the case. You will not get paid to show an invalidated ad.
               if(interstitialAd.isAdInvalidated()) {
                   return;
               }
               // Show the ad
                interstitialAd.show(); 
           }
       }, 1000 * 60 * 15); // Show the ad after 15 minutes
    }
}

Infine, aggiungi il codice di seguito alla funzione onDestroy() della tua attività per rilasciare le risorse utilizzate da InterstitialAd:

@Override
protected void onDestroy() {
    if (interstitialAd != null) {
        interstitialAd.destroy();
    }
    super.onDestroy();
}

Se usi l'emulatore Google Android predefinito, aggiungi la riga di codice seguente prima di caricare un'inserzione di prova:
AdSettings.addTestDevice("HASHED ID");.

Usa l'ID con hash che viene visualizzato nel logcat alla prima richiesta di caricamento di un'inserzione sul dispositivo.

Genymotion e i dispositivi fisici non richiedono questo passaggio. Se desideri eseguire il test con inserzioni reali, consulta la nostra guida ai test.

Avvia la tua app, dovresti vedere comparire un'inserzione interstitial:

Accelerazione hardware per le inserzioni video

Le inserzioni video in Audience Network richiedono l'abilitazione del rendering con accelerazione hardware, in caso contrario potresti visualizzare una schermata nera nelle visualizzazioni del video. Elementi a cui si applica

  • Creatività dei video nelle inserzioni native
  • Creatività dei video nelle inserzioni insterstitial
  • Inserzioni video in-stream
  • Video con premio

L'accelerazione hardware è abilitata per impostazione predefinita se il livello dell'API di destinazione è maggiore di o uguale a 14 (Ice Cream Sandwich, Android 4.0.1), ma puoi anche abilitare questa funzione in modo esplicito al livello dell'app o dell'attività.

Livello dell'app

Nel file manifest di Android, aggiungi l'attributo seguente al tag <application> per abilitare l'accelerazione hardware per tutta la tua app:

<application android:hardwareAccelerated="true" ...>

Livello di attività

Se vuoi abilitare la funzione solo per attività specifiche nella tua app, puoi aggiungere la funzione seguente al tag <activity> nel tuo file manifest di Android. Nell'esempio seguente, l'accelerazione hardware viene abilitata per l'elemento AudienceNetworkActivity, usato per il rendering delle inserzioni interstitial e dei video con premio:

<activity android:name="com.facebook.ads.AudienceNetworkActivity" android:hardwareAccelerated="true" .../>

Passaggi successivi