Pierwszym krokiem jest dodanie do aplikacji pakietu Android PAL SDK.
Dodawanie pakietu Android PAL SDK jako biblioteki
Od wersji 18.0.0 pakiet PAL SDK jest hostowany w repozytorium Google Maven oraz można dodawać do aplikacji w ten sposób:
app/build.gradle
...
dependencies {
implementation 'com.google.android.gms:play-services-pal:20.2.0'
...
}
Pakiet SDK PAL możesz też pobrać z repozytorium Google Maven i dodać go ręcznie do swojej aplikacji.
Wygeneruj liczbę jednorazową
Liczba jednorazowa to pojedynczy zaszyfrowany ciąg znaków wygenerowany przez PAL za pomocą NonceLoader
.
Pakiet SDK PAL wymaga, aby każde nowe żądanie strumienia było poprzedzone nowo wygenerowanym identyfikatorem nonce. Liczby jednorazowe można jednak wykorzystać ponownie w wielu żądaniach w ramach
ten sam strumień. Aby wygenerować nonce za pomocą pakietu PAL SDK, wprowadź zmiany w pliku MyActivity.java
. Aby zobaczyć przykładową aplikację, która używa PAL do generowania identyfikatora nonce, pobierz przykład na Androida z GitHuba.
Najpierw musisz zaimportować pakiet SDK PAL, utworzyć właściwości prywatne do przechowywania
NonceLoader
i NonceManager
, a następnie zainicjuj obiekt NonceLoader.
Zalecamy utworzenie tylko jednego wystąpienia klasy NonceLoader
dla:
każdej sesji użytkownika w aplikacji, chyba że zawiera ona wiele stron lub ich odpowiedniki
konstrukcjami. Powoduje to zachowanie korelatora strony (&correlator
) bez zmian dla
od początku śledzenia
całej sesji użytkownika w aplikacji. Nadal masz kontrolę nad tym,
korelatora strumienia (&scor
), który należy zresetować raz dla każdego nowego strumienia.
Wszystkie żądania reklam z tego samego strumienia powinny korzystać z tych samych wartości NonceLoader
i
wartość korelatora strumienia na potrzeby ograniczenia liczby wyświetleń i wykluczenia konkurencji
aby działały prawidłowo.
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);
...
}
Następnie utwórz funkcję aktywującą generowanie liczby jednorazowej. Potrzebujesz tylko jednej liczby jednorazowej
dla wszystkich żądań reklamy w odtworzeniu pojedynczego strumienia. Do testowania
może wywołać tę funkcję po kliknięciu przycisku w aplikacji testowej.
Ustawione tutaj parametry NonceRequest
to przykładowe parametry. Parametry należy ustawić na podstawie cech Twojej aplikacji.
Ta funkcja asynchronicznie aktywuje generowanie liczby jednorazowej, więc musisz
zaimplementuj AsyncTask
do obsługi udanego lub nieudanego żądania liczby jednorazowej:
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());
}
}
Po utworzeniu menedżera wartości cząstkowych można je w dowolnym momencie pobrać za pomocą funkcji nonceManager.getNonce()
.
Dołącz liczbę jednorazową do żądania reklamy
Aby użyć wygenerowanej liczby jednorazowej, dołącz do tagu reklamy parametr givn
i parametr
wartość jednorazową przed wysłaniem żądań reklamy.
/**
* 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);
}
Śledzenie zdarzeń odtwarzania
Na koniec musisz zaimplementować różne moduły obsługi zdarzeń dla odtwarzacza. Dla: do testów kliknięcia przycisku, ale nie w rzeczywistości implementacji, będą one wywoływane przez odpowiednie zdarzenia odtwarzacza:
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);
}
}
Oto, kiedy należy wywołać każdą funkcję w implementacji:
sendPlaybackStart()
: po rozpoczęciu sesji odtwarzania filmu.sendPlaybackEnd()
: gdy sesja odtwarzania filmu dobiega końca.sendAdClick()
: za każdym razem, gdy widz kliknie reklamęsendTouch()
: każda interakcja z odtwarzaczem przy każdym dotknięciu
(Opcjonalnie) Wysyłanie sygnałów Google Ad Managera za pomocą serwerów reklamowych firm zewnętrznych
Po skonfigurowaniu serwera reklamowego firmy zewnętrznej do współpracy z Google Ad Managerem zapoznaj się z artykułem do dokumentacji serwera, aby rejestrować i przekazywać wartość jednorazową w każdej reklamie użytkownika. Podany przykład to URL żądania reklamy z parametrem nonce. Parametr liczby jednorazowej jest przekazywany z pakietu SDK PAL przez z serwerami pośrednimi, a następnie z Ad Managerem, co zapewnia większe przychody.
Skonfiguruj serwer reklamowy firmy zewnętrznej, tak aby zawierał wartość jednorazową w nagłówku do Ad Managera. Oto przykład tagu reklamy skonfigurowanego w tagu serwer reklamowy firmy zewnętrznej:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
Więcej informacji znajdziesz w artykule o implementacji Google Ad Managera po stronie serwera .
Ad Manager wyszukuje wartość jednorazową za pomocą parametru givn=
. Reklama zewnętrzna
serwer musi obsługiwać własne makro, takie jak
%%custom_key_for_google_nonce%%
i zastąp go parametrem zapytania z liczbą jednorazową
podane w poprzednim kroku. Więcej informacji o tym, jak to zrobić, powinno być dostępnych w dokumentacji serwera reklamowego firmy zewnętrznej.