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 dimulaisendPlaybackEnd()
: Saat sesi pemutaran video Anda berakhirsendAdClick()
: Setiap kali penonton mengklik iklansendTouch()
: 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.