Mulai

Langkah pertama adalah menambahkan Android PAL SDK ke aplikasi Anda.

Menambahkan Android PAL SDK sebagai library

Mulai versi 18.0.0, PAL SDK dihosting di repositori Maven Google dan dapat ditambahkan ke aplikasi Anda sebagai berikut:

app/build.gradle

...
dependencies {
    implementation 'com.google.android.gms:play-services-pal:20.2.0'
    ...
}

Atau, PAL SDK dapat didownload dari repositori Maven Google dan ditambahkan secara manual ke aplikasi Anda.

Buat nonce

"Nonce" adalah satu string terenkripsi yang dibuat oleh PAL menggunakan NonceLoader. PAL SDK mewajibkan setiap permintaan streaming baru untuk disertai dengan nonce yang baru dibuat. Namun, nonce dapat digunakan kembali untuk beberapa permintaan iklan dalam {i>stream<i} yang sama. Untuk membuat nonce menggunakan PAL SDK, lakukan perubahan pada MyActivity.java. Untuk melihat aplikasi contoh yang menggunakan PAL untuk menghasilkan nonce, unduh contoh Android dari GitHub.

Anda harus mengimpor PAL SDK terlebih dahulu, membuat beberapa properti pribadi untuk disimpan NonceLoader dan NonceManager, lalu inisialisasi NonceLoader Anda.

Sebaiknya hanya buat satu instance class NonceLoader untuk setiap sesi pengguna di aplikasi Anda kecuali aplikasi Anda memiliki beberapa halaman atau halaman yang setara konstruksinya. Tindakan ini membuat korelator halaman (&correlator) tidak berubah untuk masa aktif halaman atau sesi pengguna di aplikasi. Anda masih memiliki kendali atas korelator streaming (&scor) yang harus direset sekali untuk setiap streaming baru.

Semua permintaan iklan dari streaming yang sama harus memiliki NonceLoader dan nilai korelator streaming untuk pembatasan frekuensi dan pengecualian kompetitif fitur ini agar dapat bekerja dengan baik.

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);
    ...
  }

Selanjutnya, buat fungsi untuk memicu pembuatan nonce. Anda hanya memerlukan satu nonce untuk semua permintaan iklan dalam satu pemutaran streaming. Untuk tujuan pengujian, Anda dapat memanggil fungsi ini saat mengklik tombol di aplikasi pengujian Anda. Tujuan Parameter NonceRequest yang ditetapkan di sini adalah contoh parameter. Anda harus menyetel parameter berdasarkan karakteristik aplikasi Anda sendiri.

Fungsi ini memicu pembuatan nonce secara asinkron, sehingga Anda perlu menerapkan AsyncTask untuk menangani keberhasilan atau kegagalan permintaan 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());
  }
}

Setelah pengelola nonce dibuat, nonce dapat diambil kapan saja menggunakan nonceManager.getNonce().

Lampirkan nonce ke permintaan iklan

Untuk menggunakan nonce yang dihasilkan, tambahkan tag iklan dengan parameter givn dan nonce sebelum membuat permintaan iklan.

/**
 * 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);
}

Melacak peristiwa pemutaran

Terakhir, Anda perlu menerapkan berbagai pengendali peristiwa untuk pemain Anda. Sebagai pengujian, Anda dapat melampirkannya ke peristiwa klik tombol, tetapi dalam ini akan dipicu oleh peristiwa pemutar yang sesuai:

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);
  }
}

Berikut adalah waktu yang tepat untuk memanggil setiap fungsi dalam implementasi Anda:

  • sendPlaybackStart(): Saat sesi pemutaran video dimulai
  • sendPlaybackEnd(): Saat sesi pemutaran video Anda berakhir
  • sendAdClick(): Setiap kali penonton mengklik iklan
  • sendTouch(): Pada setiap interaksi sentuh dengan pemain

(Opsional) Mengirim sinyal Google Ad Manager melalui server iklan pihak ketiga

Saat Anda menyiapkan server iklan pihak ketiga agar berfungsi dengan Google Ad Manager, lihat ke dokumentasi server Anda untuk mengambil dan meneruskan nilai nonce di setiap iklan permintaan. Contoh yang diberikan adalah URL permintaan iklan dengan parameter nonce disertakan. Parameter nonce disebarkan dari PAL SDK, melalui server perantara, lalu ke Ad Manager, sehingga memungkinkan monetisasi yang lebih baik.

Konfigurasikan server iklan pihak ketiga Anda untuk menyertakan nonce dalam permintaan server ke Ad Manager. Berikut contoh tag iklan yang dikonfigurasi di dalam server iklan pihak ketiga:

'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'

Untuk detail selengkapnya, lihat Penerapan sisi Server Google Ad Manager panduan kami.

Ad Manager mencari givn= untuk mengidentifikasi nilai nonce. Iklan pihak ketiga server tersebut harus mendukung beberapa makronya sendiri, seperti %%custom_key_for_google_nonce%%, dan menggantinya dengan parameter kueri nonce yang Anda berikan pada langkah sebelumnya. Informasi selengkapnya tentang cara melakukannya harus tersedia dalam dokumentasi server iklan pihak ketiga.