Rozpocznij

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.