PAL memungkinkan Anda mengirim sinyal iklan Google dalam permintaan iklan dan selama pemutaran iklan.
Panduan ini membahas cara menambahkan Android PAL SDK ke aplikasi Anda. Untuk melihat aplikasi contoh yang menggunakan PAL untuk membuat nonce, download contoh Android dari GitHub.
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:
implementation 'com.google.android.gms:play-services-pal:22.1.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 PAL menggunakan class NonceLoader
. PAL mengharuskan setiap permintaan streaming disertai dengan nonce unik. Namun, Anda dapat menggunakan kembali nonce untuk beberapa permintaan iklan
dalam streaming yang sama. Untuk membuat nonce menggunakan PAL SDK, lakukan perubahan berikut untuk mengimpor dan menyiapkan PAL, serta membuat fungsi untuk membuat nonce:
Impor dan siapkan PAL dengan melakukan hal berikut:
Mengimpor kelas PAL:
import com.google.ads.interactivemedia.pal.ConsentSettings; import com.google.ads.interactivemedia.pal.NonceLoader; import com.google.ads.interactivemedia.pal.NonceManager; import com.google.ads.interactivemedia.pal.NonceRequest; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import java.util.HashSet; import java.util.Set;
Buat variabel pribadi untuk menyimpan instance
NonceLoader
danNonceManager
:private NonceLoader nonceLoader; private NonceManager nonceManager;
Lakukan inisialisasi instance
NonceLoader
dengan instanceConsentSettings
dalam metodeonCreate
:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 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 isStorageAllowed = getConsentToStorage(); ConsentSettings consentSettings = ConsentSettings.builder().allowStorage(isStorageAllowed).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); adClickButton = findViewById(R.id.send_click_button); logView = findViewById(R.id.log_view); logView.setMovementMethod(new ScrollingMovementMethod()); }
Di aplikasi Anda, buat satu instance class
NonceLoader
untuk setiap sesi pengguna. Jika aplikasi Anda memiliki beberapa halaman atau konstruksi yang setara, buat instanceNonceLoader
baru untuk setiap halaman atau yang setara dengan halaman. Dengan menggunakan instanceNonceLoader
yang sama, Anda mempertahankan&correlator
korelasinya tidak berubah selama masa aktif halaman atau sesi pengguna di aplikasi. Anda tetap memiliki kontrol atas&scor
korelasinya, yang harus Anda reset untuk setiap aliran baru dengan membuat nonce baru.Semua permintaan iklan dari streaming yang sama harus menggunakan instance
NonceLoader
yang sama dan nilai korelator streaming untuk fitur pembatasan frekuensi dan pengecualian kompetitif.Membuat nonce:
public void generateNonceForAdRequest(View view) { logMessage("Generate Nonce Request"); 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(); nonceLoader .loadNonceManager(nonceRequest) .addOnSuccessListener( new OnSuccessListener<NonceManager>() { @Override public void onSuccess(NonceManager manager) { nonceManager = manager; String nonceString = manager.getNonce(); logMessage("Nonce generated"); logMessage(nonceString.substring(0, 20) + "..."); Log.i(LOG_TAG, "Generated nonce: " + nonceString); // From here you would trigger your ad request and move on to initialize content. exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString); adClickButton.setEnabled(true); } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(Exception error) { logMessage("Nonce generation failed"); Log.e(LOG_TAG, "Nonce generation failed: " + error.getMessage()); } }); }
Anda hanya memerlukan satu nonce untuk semua permintaan iklan dalam pemutaran streaming tunggal. Untuk tujuan pengujian, panggil fungsi ini saat mengklik tombol di aplikasi pengujian Anda. Parameter
NonceRequest
yang ditetapkan dalam panduan ini adalah contoh parameter. Tetapkan parameter berdasarkan karakteristik aplikasi Anda sendiri.Fungsi ini menghasilkan nonce secara asinkron. Anda harus menangani kasus berhasil dan gagal dari permintaan nonce. Setelah pengelola nonce tersedia, ambil nonce sebelum Anda membuat permintaan iklan menggunakan metode
nonceManager.getNonce()
.
Lampirkan nonce ke permintaan iklan
Untuk menggunakan nonce yang dibuat, tambahkan parameter givn
dan nilai nonce ke tag iklan Anda sebelum membuat permintaan iklan:
// From here you would trigger your ad request and move on to initialize content.
exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
Melacak peristiwa pemutaran
Untuk melacak peristiwa pemutaran, Anda harus menyiapkan pengendali peristiwa untuk mengirim sinyal iklan ke Google:
// Triggered when a user clicks-through on an ad which was requested using a PAL nonce.
public void sendAdClick(View view) {
logMessage("Ad click sent");
if (nonceManager != null) {
nonceManager.sendAdClick();
}
}
// In a typical PAL app, this is called when a user touch or click is detected,
// on the ad other than an ad click-through.
public void onVideoViewTouch(MotionEvent e) {
if (nonceManager != null) {
nonceManager.sendAdTouch(e);
}
}
// In a typical PAL app, this is called when a content playback session starts.
public void sendPlaybackStart() {
logMessage("Playback start");
if (nonceManager != null) {
nonceManager.sendPlaybackStart();
}
}
// In a typical PAL app, this is called when a content playback session ends.
public void sendPlaybackEnd() {
logMessage("Playback end");
if (nonceManager != null) {
nonceManager.sendPlaybackEnd();
}
}
Berikut adalah waktu untuk memanggil setiap fungsi dalam penerapan Anda:
sendPlaybackStart()
: Saat sesi pemutaran video Anda dimulaisendPlaybackEnd()
: Saat sesi pemutaran video Anda berakhirsendAdClick()
: Setiap kali penonton mengklik iklansendTouch()
: Pada setiap interaksi sentuh dengan pemutar
Untuk tujuan pengujian, lampirkan metode pengendali peristiwa ke peristiwa klik tombol. Dalam penerapan produksi, siapkan aplikasi Anda untuk peristiwa pemain guna memanggil metode pengendali peristiwa.
(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 Anda untuk mengambil dan meneruskan nilai nonce di setiap permintaan iklan. Contoh yang diberikan adalah URL permintaan iklan dengan parameter nonce yang disertakan. Parameter nonce disebarkan dari PAL SDK, melalui server perantara, lalu ke Ad Manager, sehingga memungkinkan monetisasi yang lebih baik.
Konfigurasi 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 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 pada langkah sebelumnya. Informasi selengkapnya tentang cara melakukannya tersedia dalam dokumentasi server iklan pihak ketiga.