PAL, reklam isteklerinizde ve reklam oynatma sırasında Google reklam sinyalleri göndermenize olanak tanır.
Bu kılavuzda, Android PAL SDK'nın uygulamanıza nasıl ekleneceği açıklanmaktadır. PAL'ı kullanarak tek seferlik rastgele sayı oluşturan örnek bir uygulamayı görmek için GitHub'dan Android örneğini indirin.
Android PAL SDK'sını kitaplık olarak ekleme
18.0.0 sürümünden itibaren PAL SDK, Google'ın Maven deposunda barındırılır ve uygulamanıza aşağıdaki şekilde eklenebilir:
implementation 'com.google.android.gms:play-services-pal:22.1.0'
Alternatif olarak, PAL SDK'sı Google'ın Maven deposundan indirilebilir ve uygulamanıza manuel olarak eklenebilir.
Tek kullanımlık sayı oluşturma
Nonce, PAL'ın NonceLoader
sınıfını kullanarak oluşturduğu tek bir şifrelenmiş dizedir. PAL, her akış isteğinin benzersiz bir nonce ile birlikte gönderilmesini gerektirir. Ancak, aynı akışta birden fazla reklam isteği için nonce'ları yeniden kullanabilirsiniz. PAL SDK'yı kullanarak nonce oluşturmak için PAL'yi içe aktarıp ayarlamak üzere aşağıdaki değişiklikleri yapın ve nonce oluşturacak bir işlev oluşturun:
Aşağıdaki adımları uygulayarak PAL'yi içe aktarın ve ayarlayın:
PAL sınıflarını içe aktarma:
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;
NonceLoader
veNonceManager
örneklerini depolamak için özel değişkenler oluşturun:private NonceLoader nonceLoader; private NonceManager nonceManager;
NonceLoader
örneğinizionCreate
yönteminde birConsentSettings
örneğiyle başlatın:@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()); }
Uygulamanızda her kullanıcı oturumu için
NonceLoader
sınıfının bir örneğini oluşturun. Uygulamanızda birden fazla sayfa veya eşdeğer yapı varsa her sayfa ya da sayfa eşdeğeri için yeni birNonceLoader
örneği oluşturun. AynıNonceLoader
örneğini kullanarak sayfa korelasyonunu&correlator
bir sayfanın veya kullanıcının uygulamadaki oturumunun ömrü boyunca değiştirmeden tutarsınız. Yine de akış korelasyonunu&scor
kontrol edebilirsiniz. Yeni bir nonce oluşturarak her yeni akış için akış korelasyonunu sıfırlamanız gerekir.Sıklık sınırı ve rakip hariç tutma özelliklerinin kullanılabilmesi için aynı akışın tüm reklam istekleri aynı
NonceLoader
örneğini ve akış ilişkilendirici değerini paylaşmalıdır.Tek seferlik sayı oluşturun:
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()); } }); }
Tek bir akış oynatmadaki tüm reklam istekleri için yalnızca bir nonce gerekir. Test amacıyla, test uygulamanızda bir düğmeyi tıkladığınızda bu işlevi çağırın. Bu kılavuzda ayarlanan
NonceRequest
parametreleri örnek parametrelerdir. Parametrelerinizi kendi uygulama özelliklerinize göre ayarlayın.Bu işlev, tek kullanımlık rastgele sayıları eşzamansız olarak oluşturur. Nonce isteğinin hem başarılı hem de başarısız olduğu durumları ele almanız gerekir. Nonce yöneticisi kullanılabilir hale geldikten sonra,
nonceManager.getNonce()
yöntemini kullanarak reklam isteğinde bulunmadan önce nonce'u alın.
Reklam isteğine nonce ekleme
Oluşturulan nonce'u kullanmak için reklam isteklerinizi yapmadan önce reklam etiketinize givn
parametresini ve nonce değerini ekleyin:
// From here you would trigger your ad request and move on to initialize content.
exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
Oynatma etkinliklerini izleme
Oynatma etkinliklerini izlemek için reklam sinyallerini Google'a gönderecek etkinlik işleyiciler ayarlamanız gerekir:
// 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();
}
}
Uygulamanızda her işlevi ne zaman çağırmanız gerektiği aşağıda açıklanmıştır:
sendPlaybackStart()
: Video oynatma oturumunuz başladığındasendPlaybackEnd()
: Video oynatma oturumunuz sona erdiğindesendAdClick()
: İzleyici her reklamı tıkladığındasendTouch()
: Oynatıcıyla yapılan her dokunma etkileşiminde
Test amacıyla, etkinlik işleyici yöntemlerini düğme tıklama etkinliklerine ekleyin. Üretim uygulamasında, uygulamanızı oyuncu etkinlikleri için ayarlayarak etkinlik işleyici yöntemlerini çağırın.
(İsteğe bağlı) Google Ad Manager sinyallerini üçüncü taraf reklam sunucuları üzerinden gönderme
Üçüncü taraf reklam sunucunuzu Google Ad Manager ile çalışacak şekilde ayarlarken her reklam isteğindeki nonce değerini yakalamak ve iletmek için sunucunuzun dokümanlarına bakın. Sağlanan örnek, nonce parametresinin dahil edildiği bir reklam isteği URL'sidir. Tek seferlik rastgele sayı parametresi, PAL SDK'sından, aracı sunucularınızdan ve ardından Ad Manager'a yayılır. Bu sayede daha iyi para kazanma sağlanır.
Üçüncü taraf reklam sunucunuzu, sunucunun Ad Manager'a yaptığı isteğe nonce'ı dahil edecek şekilde yapılandırın. Üçüncü taraf reklam sunucusunda yapılandırılmış bir reklam etiketi örneği aşağıda verilmiştir:
'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'
Daha fazla bilgi için Google Ad Manager sunucu tarafı uygulama kılavuzuna bakın.
Ad Manager, nonce değerini belirlemek için givn=
karakterini arar. Üçüncü taraf reklam sunucusunun, %%custom_key_for_google_nonce%%
gibi kendi makrolarından birini desteklemesi ve bunu önceki adımda sağladığınız nonce sorgu parametresiyle değiştirmesi gerekir. Bu işlemin nasıl yapılacağı hakkında daha fazla bilgiyi üçüncü taraf reklam sunucusunun belgelerinde bulabilirsiniz.