Il primo passaggio consiste nell'aggiungere l'SDK Android PAL alla tua app.
Aggiungere l'SDK Android PAL come libreria
A partire dalla versione 18.0.0, l'SDK PAL è ospitato nel Repository Maven di Google e può essere aggiunto alla tua app nel seguente modo:
app/build.gradle
...
dependencies {
implementation 'com.google.android.gms:play-services-pal:20.2.0'
...
}
In alternativa, l'SDK PAL può essere scaricato dal repository Maven di Google e aggiunto manualmente all'app.
Genera nonce
Un "nonce" è una singola stringa criptata generata da PAL utilizzando NonceLoader
.
L'SDK PAL richiede che ogni nuova richiesta di streaming sia accompagnata da un nuovo
nonce generato. Tuttavia, i nonce possono essere riutilizzati per più richieste di annunci in
lo stesso flusso. Per generare un nonce utilizzando l'SDK PAL, apporta le modifiche a
MyActivity.java
. Per vedere un'app di esempio che utilizza PAL per generare un nonce,
scarica l'esempio per Android da
GitHub.
Innanzitutto, devi importare l'SDK PAL, creare alcune proprietà private da archiviare
NonceLoader
e NonceManager
, quindi inizializza il NonceLoader.
Ti consigliamo di creare una sola istanza della classe NonceLoader
per ogni sessione utente nella tua app, a meno che l'app non abbia più pagine o costrutti equivalenti. In questo modo il correlatore della pagina (&correlator
) rimane invariato per il
per tutta la durata di una pagina o per la sessione
di un utente sull'app. Hai comunque il controllo
il correlatore stream (&scor
) che deve essere reimpostato una volta per ogni nuovo stream.
Per il corretto funzionamento delle funzionalità di quota limite ed esclusione competitiva, tutte le richieste di annunci dello stesso stream devono condividere lo stesso valore NonceLoader
e lo stesso valore di correlatore dello stream.
import android.app.Activity;
import android.os.Bundle;
import com.google.ads.interactivemedia.pal.NonceLoader;
import com.google.ads.interactivemedia.pal.NonceManager;
import com.google.ads.interactivemedia.pal.NonceRequest;
import com.google.ads.interactivemedia.pal.ConsentSettings;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends Activity {
...
private NonceLoader nonceLoader;
private NonceManager nonceManager = null;
private ConsentSettings consentSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The default value for allowStorage() is false, but can be
// changed once the appropriate consent has been gathered. The
// getConsentToStorage() method is a placeholder for the publisher's own
// method of obtaining user consent, either by integrating with a CMP or
// based on other methods the publisher chooses to handle storage consent.
boolean isConsentToStorage = getConsentToStorage();
videoView = findViewById(R.id.video_view);
videoView.setOnTouchListener(this::onVideoViewTouch);
consentSettings = ConsentSettings.builder()
.allowStorage(isConsentToStorage)
.build();
// It is important to instantiate the NonceLoader as early as possible to
// allow it to initialize and preload data for a faster experience when
// loading the NonceManager. A new NonceLoader will need to be instantiated
//if the ConsentSettings change for the user.
nonceLoader = new NonceLoader(this, consentSettings);
...
}
Quindi, crea una funzione per attivare la generazione di nonce. Basta un solo nonce
per tutte le richieste di annunci
in un singolo stream. Per scopi di test, puoi chiamare questa funzione quando fai clic su un pulsante nell'app di test. I parametri NonceRequest
impostati qui sono parametri di esempio. Devi impostare
in base alle caratteristiche della tua app.
Questa funzione attiva la generazione del nonce in modo asincrono, quindi devi
Implementa un AsyncTask
per gestire l'esito positivo o negativo della richiesta nonce:
public void generateNonceForAdRequest() {
Set supportedApiFrameWorksSet = new HashSet();
// The values 2, 7, and 9 correspond to player support for VPAID 2.0,
// OMID 1.0, and SIMID 1.1.
supportedApiFrameWorksSet.add(2);
supportedApiFrameWorksSet.add(7);
supportedApiFrameWorksSet.add(9);
NonceRequest nonceRequest = NonceRequest.builder()
.descriptionURL("https://example.com/content1")
.iconsSupported(true)
.omidPartnerVersion("6.2.1")
.omidPartnerName("Example Publisher")
.playerType("ExamplePlayerType")
.playerVersion("1.0.0")
.ppid("testPpid")
.sessionId("Sample SID")
.supportedApiFrameworks(supportedApiFrameWorksSet)
.videoPlayerHeight(480)
.videoPlayerWidth(640)
.willAdAutoPlay(true)
.willAdPlayMuted(false)
.build();
NonceCallbackImpl callback = new NonceCallbackImpl();
nonceLoader
.loadNonceManager(nonceRequest)
.addOnSuccessListener(callback)
.addOnFailureListener(callback);
}
private class NonceCallbackImpl implements OnSuccessListener<NonceManager>, OnFailureListener {
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// from here you would trigger your ad request and move on to initialize content
}
@Override
public void onFailure(Exception error) {
Log.e("PALSample", "Nonce generation failed: " + error.getMessage());
}
}
Una volta creato un gestore di nonce, il nonce può essere recuperato in qualsiasi momento utilizzando
nonceManager.getNonce()
.
Allega un nonce alla richiesta di annuncio
Per utilizzare il nonce generato, aggiungi al tag annuncio un parametro givn
e la macro
nonce prima di effettuare le richieste di annunci.
/**
* The ad tag for your ad request, for example:
* https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external\
* /single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1\
* &cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
*
* For more sample ad tags, see
* developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
*/
private static final String DEFAULT_AD_TAG = "Your ad tag";
...
@Override
public void onSuccess(NonceManager manager) {
nonceManager = manager;
String nonceString = manager.getNonce();
Log.i("PALSample", "Generated nonce: " + nonceString);
// Append the nonce to the ad tag URL.
makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
}
Monitorare gli eventi di riproduzione
Infine, devi implementare vari gestori di eventi per il player. Per per scopi di test, puoi collegarli agli eventi di clic sui pulsanti, ma in realtà vengono attivati dagli eventi del player appropriati:
public void sendAdClick() {
if (nonceManager != null) {
nonceManager.sendAdClick();
}
}
public void sendPlaybackStart() {
if (nonceManager != null) {
nonceManager.sendPlaybackStart();
}
}
public void sendPlaybackEnd() {
if (nonceManager != null) {
nonceManager.sendPlaybackEnd();
}
}
public void onVideoViewTouch(MotionEvent e) {
if (nonceManager != null) {
nonceManager.sendTouch(e);
}
}
Di seguito è indicato quando chiamare ogni funzione nell'implementazione:
sendPlaybackStart()
: quando inizia la sessione di riproduzione videosendPlaybackEnd()
: al termine della sessione di riproduzione videosendAdClick()
: ogni volta che lo spettatore fa clic su un annuncio.sendTouch()
: a ogni interazione tocco con il player
(Facoltativo) Inviare indicatori di Google Ad Manager tramite ad server di terze parti
Quando configuri l'ad server di terze parti in modo che funzioni con Google Ad Manager, fai riferimento alla documentazione del server per acquisire e inoltrare il valore nonce in ogni annuncio richiesta. L'esempio fornito è un URL di richiesta di annuncio con il parametro nonce inclusi. Il parametro nonce si propaga dall'SDK PAL, tramite server intermediari e poi ad Ad Manager, per migliorare la monetizzazione.
Configura l'ad server di terze parti in modo da includere il nonce nel richiesta ad Ad Manager. Di seguito è riportato un esempio di un tag annuncio configurato all'interno della ad server di terze parti:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
Per ulteriori dettagli, consulta Implementazione lato server di Google Ad Manager .
Ad Manager cerca givn=
per identificare il valore nonce. L'annuncio di terze parti
server deve supportare alcune macro, come
%%custom_key_for_google_nonce%%
e sostituiscilo con il parametro di query nonce
che hai fornito nel passaggio precedente. Ulteriori informazioni su come eseguire questa operazione
devono essere disponibili
nella documentazione dell'ad server di terze parti.