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:22.0.0'
    ...
}

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

Membuat nonce

"Nonce" adalah satu string terenkripsi yang dihasilkan 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 streaming yang sama. Untuk membuat nonce menggunakan PAL SDK, lakukan perubahan pada MyActivity.java. Untuk melihat aplikasi contoh yang menggunakan PAL untuk membuat nonce, download contoh Android dari GitHub.

Pertama-tama, Anda harus mengimpor PAL SDK, membuat beberapa properti pribadi untuk menyimpan NonceLoader dan NonceManager, lalu melakukan inisialisasi NonceLoader.

Sebaiknya Anda hanya membuat satu instance class NonceLoader untuk setiap sesi pengguna di aplikasi, kecuali jika aplikasi Anda memiliki beberapa halaman atau konstruk yang setara. Tindakan ini akan membuat korelator halaman (&correlator) tidak berubah selama masa aktif halaman atau sesi pengguna di aplikasi. Anda masih memiliki kontrol atas korelator streaming (&scor) yang harus direset satu kali untuk setiap streaming baru.

Semua permintaan iklan dari streaming yang sama harus memiliki NonceLoader dan nilai korelator streaming yang sama agar fitur pembatasan frekuensi dan pengecualian kompetitif berfungsi dengan benar.

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. Parameter NonceRequest yang ditetapkan di sini adalah contoh parameter. Anda harus menetapkan 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().

Melampirkan nonce ke permintaan iklan

Untuk menggunakan nonce yang dihasilkan, tambahkan tag iklan Anda dengan parameter givn dan nilai 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 pemutar. Untuk tujuan pengujian, Anda dapat melampirkan ini ke peristiwa klik tombol, tetapi dalam penerapan sebenarnya, peristiwa ini akan dipicu oleh peristiwa pemain 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 untuk memanggil setiap fungsi dalam penerapan Anda:

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

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

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

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

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

Untuk mengetahui detail selengkapnya, lihat Panduan penerapan sisi server Google Ad Manager.

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