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