Android'de Özel Korumalı Alan'ı okurken dokümanlarında, Geliştirici Önizlemesi veya Beta düğmesini kullanarak program sürümüne geçiş yapabilirsiniz. Bunun için talimatlar farklılık gösterebilir.
Android'deki Protected Audience API (eski adıyla FLEDGE) şunları içerir: Custom Audience API ve Reklam Seçimi API'si. Reklam teknolojisi platformları ve reklamverenler önceki uygulama etkileşimine dayalı özel reklamlar sunmak için bu API'leri kullanabilir. Tanımlayıcıların uygulamalar arasında paylaşımını ve bir kullanıcının uygulamasının paylaşımını sınırlar üçüncü taraflarla olan etkileşim bilgileri.
Custom Audience API "özel kitle" merkezlidir soyutlama, ortak amaçlara sahip bir kullanıcı grubunu temsil eder. Reklamveren, bir kullanıcıyı özel bir kitleye kaydedebilir ve alakalı reklamları ilişkilendirebilir gerçekleşebilir. Bu bilgiler, yerel olarak depolanır ve reklamvereni bilgilendirmek için kullanılabilir. ve reklam oluşturmayı kapsar.
Reklam Seçimi API'si birden fazla geliştiricinin şunları yapmasına olanak tanıyan bir çerçeve sağlar: Özel bir kitle için yerel olarak açık artırma düzenleyebilirsiniz. Bunun için sistem özel kitleyle ilişkili reklamları dikkate alır ve Bir reklam teknolojisi platformunun cihaza döndürdüğü reklamlar üzerinde ek işlemler.
Reklam teknolojisi platformları, yeniden pazarlamayı uygulamak için bu API'leri Kullanıcı gizliliğini korur. Uygulama yükleme gibi ek kullanım alanları için destek reklamların yayınlanması planlanmaktadır. Protected Audience hakkında daha fazla bilgi API'yi Android'de tasarım teklifinde bulabilirsiniz.
Bu kılavuzda, aşağıdaki işlemleri yapmak için Android'de Protected Audience API ile nasıl çalışabileceğiniz açıklanmaktadır: şunları yapın:
- Özel kitleleri yönetme
- Bir cihazda reklam seçimini ayarlama ve çalıştırma
- Reklam gösterimlerini raporlama
Başlamadan önce
Başlamadan önce aşağıdaki adımları tamamlayın:
- Android'de Özel Korumalı Alan için geliştirme ortamınızı ayarlayın.
- Desteklenen bir cihaza bir sistem görüntüsü yükleyin veya bir sistem görüntüsü kurun emülatörü de Android'de Özel Korumalı Alan için destek sunar.
Bir terminalde, Protected Audience API'ye (devre dışı) erişimi etkinleştirin varsayılan olarak) aşağıdaki adb komutuyla değiştirin.
adb shell device_config put adservices ppapi_app_allow_list \"*\"
Uygulamanıza
ACCESS_ADSERVICES_CUSTOM_AUDIENCE
izni ekleyin manifesto:<uses-permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" />
Şu öğenin
<application>
öğesinde bir reklam hizmetleri yapılandırmasına başvuruda bulun: manifest dosyanız:<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/ad_services_config" />
Manifest'inizde başvurulan reklam hizmetleri XML kaynağını belirtin. Örneğin:
res/xml/ad_services_config.xml
Reklam hizmetleri izinleri hakkında daha fazla bilgi SDK erişim denetimi.<ad-services-config> <custom-audiences allowAllToAccess="true" /> </ad-services-config>
Reklam Seçimi API'si varsayılan olarak sınırları zorunlu kılar bir açık artırmanın veya gösterimin raporladığı maksimum bellek miktarına göre ayırabilir. Bellek sınırlaması özelliği için WebView sürümü gereklidir 105.0.5195.58 veya sonraki sürümler. Platformda sürüm kontrolü zorunlu kılınır ve Bu durumda
selectAds
vereportImpression
API'leri başarısız olur. memnun kalmadığından emin olun. Bunu iki şekilde ayarlayabilirsiniz:1. Seçenek: Bu kontrolü devre dışı bırakmak için aşağıdaki adb komutunu çalıştırın:
adb device_config put fledge_js_isolate_enforce_max_heap_size false
2. Seçenek: Google Play Store'dan WebView Beta'yı yükleyin. Bu daha önce belirtilen sürüme eşit veya bundan daha yüksek olması gerekir.
Özel kitleye katılın
Özel kitle, ortak amaçlara sahip veya reklamveren uygulaması tarafından belirlenen ilgi alanları. Bir uygulama veya SDK, belirli bir kitleyi belirtmek için kullanılır (örneğin, yalnızca hakkında daha fazla bilgi edindiniz. Eşzamansız olarak bir özel kitle oluşturmak veya bir özel kitleye katılmak için takip etmek için:
CustomAudienceManager
nesnesini başlatın.- Şu gibi anahtar parametreleri belirterek bir
CustomAudience
nesnesi oluşturun: paketine ve alakalı bir ada yer verilmelidir. Ardından,CustomAudience
içerenJoinCustomAudienceRequest
nesnesi nesnesini tanımlayın. - Eş zamansız
joinCustomAudience()
çağrısı içinJoinCustomAudienceRequest
nesnesi ile alakalıExecutor
veOutcomeReceiver
nesneleri.
Kotlin
val customAudienceManager: CustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java)
// Initialize a custom audience.
val audience = CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
...
.build()
// Initialize a custom audience request.
val joinCustomAudienceRequest: JoinCustomAudienceRequest =
JoinCustomAudienceRequest.Builder().setCustomAudience(audience).build()
// Request to join a custom audience.
customAudienceManager.joinCustomAudience(joinCustomAudienceRequest,
executor,
outcomeReceiver)
Java
CustomAudienceManager customAudienceManager =
context.getSystemService(CustomAudienceManager.class);
// Initialize a custom audience.
CustomAudience audience = new CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
...
.build();
// Initialize a custom audience request.
JoinCustomAudienceRequest joinCustomAudienceRequest =
new JoinCustomAudienceRequest.Builder().setCustomAudience(audience).build();
// Request to join a custom audience.
customAudienceManager.joinCustomAudience(joinCustomAudienceRequest,
executor,
outcomeReceiver);
Aşağıdaki parametrelerin kombinasyonu her bir parametrenin her birini benzersiz bir şekilde
Cihazda CustomAudience
nesnesi:
owner
: Sahip uygulamanın paket adı. Bu ayar dolaylı olarak paket adı:buyer
: Bu özel öğe için reklamları yöneten alıcı reklam ağının tanımlayıcısı kitle.name
: Özel kitlenin rastgele bir adı veya tanımlayıcısı.
joinCustomAudience()
, farklı bir örnekle tekrar tekrar çağrılıyor
CustomAudience
, mevcut CustomAudience
öğesini şununla günceller:
eşleşen owner, buyer
ve name
parametreleri. Gizliliğin korunmasına yardımcı olmak için
"üreme" kavramını birbirinden ayırt edememesi nedeniyle ve "güncelle".
Ayrıca, CustomAudience
bu gereklilerle oluşturulmalıdır
parametre:
- Günlük güncelleme URL'si: Bir HTTPS URL'si için arka planda her gün sorgulanan Özel bir kitlenin kullanıcı teklif sinyallerini, güvenilir teklif verilerini ve reklamlar için URL'ler ve meta veriler oluşturun.
- Teklif verme mantığı URL'si: Reklam seçimi sırasında alıcının JavaScript teklif verme mantığını temel alır. Gerekli işlev imzalarına bakın işleyeceğiz.
- Reklam Oluşturma Kimlikleri: Alıcı reklam teknolojisi tarafından ayarlanan rastgele bir kimlik. Bu bir B&A yükünü oluşturma optimizasyonu.
CustomAudience
nesnesi için isteğe bağlı parametreler şunları içerebilir:
- Etkinleştirme süresi: Özel kitleler yalnızca reklam seçimine katılabilir. ve günlük güncellemelerden haberdar olmanız gerekir. Bu yöntem, bir iş görüşmesinde Örneğin uygulamanın etkin olmayan kullanıcıları.
- Geçerlilik bitiş zamanı: Özel kitlenin cihazdan kaldırılır.
- Kullanıcı teklif verme sinyalleri: Kullanıcı sinyallerini içeren bir JSON dizesi (ör. kullanıcının teklif verme mantığı JavaScript'inin kullandığı, kullanıcının tercih ettiği yerel ayar reklam seçim sürecinde teklifler oluşturmak için. Bu biçim, reklam teknolojisinin platformlar, kodları farklı platformlarda yeniden kullanır ve JavaScript'te kullanımı kolaylaştırır işlevlerine dahildir.
- Güvenilir teklif verileri: Bir HTTPS URL'si ve güvenilir bir Anahtar/Değerden teklif sinyalleri getiren reklam seçim süreci geliştirmenizi sağlar.
- Reklamlar: Gösterilen reklamlara karşılık gelen
AdData
nesnelerinin listesi Reklam seçimine katılmalıdır. HerAdData
nesnesi şunlardan oluşur:- Oluşturma URL'si: Nihai reklamı oluşturmak için sorgulanan bir HTTPS URL'si.
- Meta veri: Şu bilgileri içeren bir dize olarak serileştirilmiş bir JSON nesnesi: tarafından tüketilir.
- Reklam Filtreleri: Uygulama için gerekli tüm bilgileri içeren bir sınıf Reklam seçimi sırasında reklam filtreleme ve sıklık sınırı uygulayın.
Aşağıda, CustomAudience
nesnesi örneklendirmesi için bir örnek verilmiştir:
Kotlin
// Minimal initialization of a CustomAudience object
val customAudience: CustomAudience = CustomAudience.Builder()
.setBuyer(AdTechIdentifier.fromString("my.buyer.domain.name"))
.setName("example-custom-audience-name")
.setDailyUpdateUrl(Uri.parse("https://DAILY_UPDATE_URL"))
.setBiddingLogicUrl(Uri.parse("https://BIDDING_LOGIC_URL"))
.build()
Java
// Minimal initialization of a CustomAudience object
CustomAudience customAudience = CustomAudience.Builder()
.setBuyer(AdTechIdentifier.fromString("my.buyer.domain.name"))
.setName("example-custom-audience-name")
.setDailyUpdateUrl(Uri.parse("https://DAILY_UPDATE_URL"))
.setBiddingLogicUrl(Uri.parse("https://BIDDING_LOGIC_URL"))
.build();
JoinCustomAudience() sonuçlarını işleme
Eşzamansız joinCustomAudience()
yöntemi, OutcomeReceiver
yöntemini kullanır
nesnesini ifade eder.
onResult()
geri çağırması, özel kitlenin başarıyla tamamlandığını belirtir oluşturabilir veya güncelleyebilir.onError()
geri çağırması iki olası koşulu belirtir.JoinCustomAudienceRequest
geçersiz bir şekilde başlatıldıysa bağımsız değişkenleri yerine,AdServicesException
Sorun,IllegalArgumentException
.- Diğer tüm hatalar için
AdServicesException
IllegalStateException
nedeni gösterilir.
Aşağıda, joinCustomAudience()
sonucunun ele alınmasına dair bir örnek verilmiştir:
Kotlin
var callback: OutcomeReceiver<Void, AdServicesException> =
object : OutcomeReceiver<Void, AdServicesException> {
override fun onResult(result: Void) {
Log.i("CustomAudience", "Completed joinCustomAudience")
}
override fun onError(error: AdServicesException) {
// Handle error
Log.e("CustomAudience", "Error executing joinCustomAudience", error)
}
};
Java
OutcomeReceiver callback = new OutcomeReceiver<Void, AdServicesException>() {
@Override
public void onResult(@NonNull Void result) {
Log.i("CustomAudience", "Completed joinCustomAudience");
}
@Override
public void onError(@NonNull AdServicesException error) {
// Handle error
Log.e("CustomAudience", "Error executing joinCustomAudience", error);
}
};
Özel kitleden ayrılma
Kullanıcı belirli bir özel için iş ölçütlerini artık karşılamıyorsa
bir uygulama veya SDK, özel öğeyi kaldırmak için leaveCustomAudience()
gerçekleşebilir. Benzersiz değerine göre bir CustomAudience
kaldırmak için
parametreleri için şunları yapın:
CustomAudienceManager
nesnesini başlatın.LeaveCustomAudienceRequest
grubunu özel kitleninbuyer
vename
. Bu giriş alanları hakkında daha fazla bilgi edinmek için "Özel bir kitleye katılın."- Eşzamansız
leaveCustomAudience()
yönteminiLeaveCustomAudienceRequest
nesnesi ile alakalıExecutor
veOutcomeReceiver
nesneleri.
Kotlin
val customAudienceManager: CustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java)
// Initialize a LeaveCustomAudienceRequest
val leaveCustomAudienceRequest: LeaveCustomAudienceRequest =
LeaveCustomAudienceRequest.Builder()
.setBuyer(buyer)
.setName(name)
.build()
// Request to leave a custom audience
customAudienceManager.leaveCustomAudience(
leaveCustomAudienceRequest,
executor,
outcomeReceiver)
Java
CustomAudienceManager customAudienceManager =
context.getSystemService(CustomAudienceManager.class);
// Initialize a LeaveCustomAudienceRequest
LeaveCustomAudienceRequest leaveCustomAudienceRequest =
new LeaveCustomAudienceRequest.Builder()
.setBuyer(buyer)
.setName(name)
.build();
// Request to leave a custom audience
customAudienceManager.leaveCustomAudience(
leaveCustomAudienceRequest,
executor,
outcomeReceiver);
joinCustomAudience()
çağrısına benzer şekilde, OutcomeReceiver
sinyalleri
sona ermelidir. Gizliliğin korunmasına yardımcı olmak için yapılan hatalar,
dahili hatalar ile geçersiz bağımsız değişkenleri birbirinden ayırt etmeye çalışın. onResult()
geri çağırma, eşleşen bir eşleşme olup olmadığına bakılmaksızın API çağrısı tamamlandığında çağrılır
özel kitle başarıyla kaldırıldı.
Reklam seçimini yayınla
Reklam seçmek üzere Protected Audience API'yi kullanmak için selectAds()
yöntemini çağırın:
- Bir
AdSelectionManager
nesnesini başlatın. AdSelectionConfig
nesnesi oluşturun.- Eşzamansız
selectAds()
yönteminiAdSelectionConfig
nesnesi ile alakalıExecutor
veOutcomeReceiver
nesneleri.
Kotlin
val adSelectionManager: AdSelectionManager =
context.getSystemService(AdSelectionManager::class.java)
// Initialize AdSelectionConfig
val adSelectionConfig: AdSelectionConfig =
AdSelectionConfig.Builder().setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.setBuyerContextualAds(
Collections.singletonMap(
contextualAds.getBuyer(), contextualAds
)
).build()
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionConfig, executor, outcomeReceiver
)
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize AdSelectionConfig
AdSelectionConfig adSelectionConfig =
new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.setBuyerContextualAds(
Collections.singletonMap(contextualAds.getBuyer(), contextualAds)
)
.build();
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(adSelectionConfig, executor, outcomeReceiver);
selectAds()
yöntemi bir AdSelectionConfig
girişi gerektirir. Burada
aşağıdaki gerekli parametreleri belirtmelisiniz:
- Satıcı: Reklam seçimini başlatan satıcı reklam ağının tanımlayıcısı.
- Karar mantığı URL'si: Satıcı reklam ağının
JavaScript mantığı.
- HTTPS URL'si: Satıcı reklam ağının JavaScript mantığını almak için sorgulandı. Gerekli işlev imzalarına bakın.
- Önceden oluşturulmuş URI: FLEDGE'in reklam seçim biçimini takip eden.
Desteklenmeyen veya hatalı bir dosyaysa
IllegalArgumentException
atlanır önceden oluşturulmuş URI iletildi.
- Özel kitle alıcıları: Alıcı reklam ağları için tanımlayıcıların tam listesi
Satıcı tarafından reklam seçim sürecine katılmasına izin verilen reklamlar.
Bu alıcı tanımlayıcıların
CustomAudience.getBuyer()
kadarı dahil olan özel kitlelerdir.
Daha özelleştirilmiş reklam için isteğe bağlı olarak aşağıdaki parametreler belirtilebilir seçim:
- Reklam seçimi sinyalleri: Dize olarak serileştirilmiş bir JSON nesnesi; şunları içerir:
JavaScript'in getirdiği alıcı teklif mantığı tarafından tüketilecek sinyaller:
CustomAudience.getBiddingLogicUrl()
. - Satıcı sinyalleri: Sinyaller içeren, dize olarak serileştirilmiş bir JSON nesnesi
tarafından getirilen JavaScript karar mantığı,
AdSelectionConfig.getDecisionLogicUrl()
. - Alıcı başına sinyaller: Dize olarak serileştirilmiş JSON nesnelerinin bir haritası
Belirli alıcılar tarafından tüketilecek sinyalleri içeren teklif mantığı JavaScript'i
getirme kaynağı
CustomAudience.getBiddingLogicUrl()
olan katılımcı özel kitlelerin alıcı alanları - İçeriğe dayalı reklamlar: Doğrudan toplanan bir dizi reklam adayı Protected Audience dışında gerçekleşen bir açık artırma sırasında alıcılardan açık artırmadır.
Bir reklam seçildikten sonra sonuçlar, teklifler ve sinyaller dahili olarak korunur.
raporlama için kullanılır. OutcomeReceiver.onResult()
geri çağırması,
Şunları içeren AdSelectionOutcome
:
- Kazanan reklam için
AdData.getRenderUrl()
adresinden elde edilen oluşturma URL'si. - Cihaz kullanıcısına özgü bir reklam seçim kimliği. Bu kimlik raporlama için kullanılır reklam gösterimini artırır.
Reklam seçimi,
veya aşırı kaynak tüketimi ya da geçersiz
kaynakların kullanımının neden olduğu
OutcomeReceiver.onError()
geri çağırması, AdServicesException
sağlar
aşağıdaki davranışlarla:
- Reklam seçimi geçersiz bağımsız değişkenlerle başlatılırsa
AdServicesException
, birIllegalArgumentException
öğesinin pek çok yolu vardır. - Diğer tüm hatalar için
AdServicesException
IllegalStateException
nedeni gösterilir.
Bağlama dayalı reklamlar
Korunan kitle, korumalı açık artırmalara bağlamsal reklamlar ekleyebilir.
İçeriksel reklamların reklam teknolojisi sunucusunda seçilmesi ve
Protected Audience API'lerin dışındaki cihazlarda. İçeriğe dayalı reklamlar,
AdSelectionConfig
kullanarak açık artırmaya girerler. Bu noktada
negatif reklam filtrelemesine uygunluk dahil olmak üzere, cihaz reklamlarıyla aynıdır. Bir
Protected Audience açık artırması tamamlandı.
reportImpression()
Bu, kazanan içeriksel reklamda reportWin()
çağrısı
kazanan reklamı almak için gösterim raporlaması ile aynı kalıbı
olanak tanır. Her içeriksel reklam için bir alıcı, teklif, raporlama mantığı için bir bağlantı,
oluşturma URL'sini ve reklam meta verilerini içerir.
İçeriğe dayalı reklamları uygulamada dağıtmak için hedef uygulamanın
ContextualAds
nesne:
Kotlin
val contextualAds: ContextualAds =
Builder().setBuyer(AdTechIdentifier.fromString(mBiddingLogicUri.getHost()))
//Pass in your valid app install ads
.setDecisionLogicUri(mContextualLogicUri)
.setAdsWithBid(appInstallAd)
.build()
Java
ContextualAds contextualAds = new ContextualAds.Builder()
.setBuyer(AdTechIdentifier.fromString(mBiddingLogicUri.getHost()))
.setDecisionLogicUri(mContextualLogicUri)
//Pass in your valid app install ads
.setAdsWithBid(appInstallAd)
.build();
Elde edilen ContextualAds
nesnesi daha sonra
AdSelectionConfig
:
Kotlin
// Create a new ad
val noFilterAd: AdData = Builder()
.setMetadata(JSONObject().toString())
.setRenderUri(Uri.parse(baseUri + NO_FILTER_RENDER_SUFFIX))
.build()
val noFilterAdWithBid = AdWithBid(noFilterAd, NO_FILTER_BID)
contextualAds.getAdsWithBid().add(noFilterAdWithBid)
Java
// Create a new ad
AdData noFilterAd = new AdData.Builder()
.setMetadata(new JSONObject().toString())
.setRenderUri(Uri.parse(baseUri + NO_FILTER_RENDER_SUFFIX))
.build();
AdWithBid noFilterAdWithBid = new AdWithBid(noFilterAd, NO_FILTER_BID);
contextualAds.getAdsWithBid().add(noFilterAdWithBid);
Uygulama yükleme reklamı filtreleme
Uygulama yükleme reklamlarını filtreleme, uygulamalar için yükleme reklamlarını filtrelemenize yardımcı olur Cihazda yüklü olan uygulamalar.
Bu süreçteki ilk adım, hangi reklamverenlerin bu hedefe ulaşmak için yüklü paketi filtrelemeniz gerekir. Bu işlemin istediğiniz uygulamada yapılması gerekir hedeflemenize olanak tanır.
Kotlin
//Create a request for setting the app install advertisers
val adtech = AdTechIdentifier.fromString("your.enrolled.uri")
val adtechSet = setOf(adtech)
val request = SetAppInstallAdvertisersRequest(adtechSet)
//Set the app install advertisers in the ad selection manager
mAdSelectionManager.setAppInstallAdvertisers(
request,
mExecutor,
object : OutcomeReceiver<Any?, Exception?>() {
fun onResult(@NonNull ignoredResult: Any?) {
Log.v("[your tag]", "Updated app install advertisers")
}
fun onError(@NonNull error: Exception?) {
Log.e("[your tag]", "Failed to update app install advertisers", error)
}
})
Java
//Create a request for setting the app install advertisers
AdTechIdentifier adtech = AdTechIdentifier.fromString("your.enrolled.uri");
Set<AdTechIdentifier> adtechSet = Collections.singleton(adtech);
SetAppInstallAdvertisersRequest request = new SetAppInstallAdvertisersRequest(adtechSet);
//Set the app install advertisers in the ad selection manager
mAdSelectionManager.setAppInstallAdvertisers(
request,
mExecutor,
new OutcomeReceiver<Object, Exception>() {
@Override
public void onResult(@NonNull Object ignoredResult) {
Log.v("[your tag]", "Updated app install advertisers");
}
@Override
public void onError(@NonNull Exception error) {
Log.e("[your tag]", "Failed to update app install advertisers", error);
}
});
Önceki kod yürütüldüğünde, aktarılan reklamverenler daha sonra teklif oluştururken belirttiğiniz yüklü uygulamaları filtreleyerek hariç tutabilir. Eğer bir reklamverenin bu uygulamanın yükleme işlemlerine erişimini kaldırmanız gerekiyor durumunda, reklamverenin bilgileri kaldırılmış olarak bu kodu tekrar çalıştırın.
Bir sonraki adım, yayıncı uygulamasında reklam filtrelemeyi ayarlamaktır. Projenin gidişatını
Reklamı, yayıncı uygulamasının içinde yayınlar (büyük olasılıkla arz tarafı SDK'sı olur)
AdFilters
nesnesini, hangi reklamlarla ilgili bilgilerle başlatmalı?
ilgili başka bir örnek:
Kotlin
// Instantiate AdFilters object with package names.
val filters: AdFilters = Builder().setAppInstallFilters(
Builder().setPackageNames(setOf("example.target.app")).build()
).build()
Java
// Instantiate AdFilters object with package names.
AdFilters filters = new AdFilters.Builder()
.setAppInstallFilters(
new AppInstallFilters.Builder()
.setPackageNames(Collections.singleton("example.target.app"))
.build())
.build();
Talep tarafı yayıncıları,AdFilter
kitlesine nasıl ulaşılacağını gösterir.
AdFilters
, yeni bir AdData
örneklendirme aşamasında da iletilebilir.
nesne:
Kotlin
// Instantiate an AdData object with the AdFilters created in the
// previous example.
val appInstallAd: AdData =
Builder().setMetadata("{ ... }") // Valid JSON string
.setRenderUri(Uri.parse("www.example-dsp1.com/.../campaign123.html"))
.setAdFilters(filters).build()
Java
// Instantiate an AdData object with the AdFilters created in the
// previous example.
AdData appInstallAd = new AdData.Builder()
.setMetadata("{ ... }") // Valid JSON string
.setRenderUri(Uri.parse("www.example-dsp1.com/.../campaign123.html"))
.setAdFilters(filters)
.build();
Sıklık sınırı filtreleme
Sıklık sınırı filtreleme, reklam teknolojilerinin bir reklamın gösterilme sayısını sınırlamasını sağlar. gösteriliyor. Sıklık sınırı filtreleme, reklamlara aşırı maruz kalmayı azaltır ve alternatif reklamları optimize eder belirli bir reklam kampanyası için reklam seçimi
Sıklık sınırı filtresinin iki ana bileşeni vardır: reklam etkinliği türü ve reklam sayacı tuşuna basın. Kullanılabilecek reklam etkinliği türleri şunlardır:
- Kazan (çok yakında): Kazanma etkinliği, reklamın bir açık artırmayı kazandığını gösterir. Kazanma etkinlikleri, Protected Audience API tarafından otomatik olarak güncellenir ve doğrudan geliştirici tarafından çağrılması gerekir. Kazanma verileri yalnızca şuradaki reklamlara görünür: elde edebilirsiniz.
- Gösterim: Cihaz üzerinde bir arayan (SSP veya
reportImpression
MMP),updateAdCounterHistogram()
bir seçenek belirleyin. Gösterim etkinlikleri, ait olan tüm reklamlar tarafından görülebilir belirli bir TTP ile uyumludur ve aynı özel kitledeki reklamlarla sınırlı değildir. - Görünüm: Etkinlik, cihazda arayan kişi (SSP veya MMP) tarafından belirli bir noktada çağrılır.
updateAdCounterHistogram()
numaralı telefona çağrı yaparak seçtikleri kod. Etkinlikleri görüntüle: belirli bir TTP'ye ait olan tüm reklamlar tarafından görülebilir ve aynı Özel Kitle. - Tıklama: Etkinlik, cihazda arayan kişi (SSP veya MMP) tarafından belirli bir noktada çağrılır.
updateAdCounterHistogram()
numaralı telefona çağrı yaparak seçtikleri kod. Tıklama etkinlikleri Belirli bir TTP'ye ait tüm reklamlar tarafından görülebilir ve aynı Özel Kitle.
Yayıncı uygulamasında, cihazda varlığı olan bir STP veya MMP, reklamı çağırır.
etkinlikler. updateAdCounterHistogram()
çağrıldığında, bir frekansın sayacı
teklif sınırlama filtresi, gelecekteki açık artırmaların güncel olması için
Kullanıcının belirli bir reklamla karşılaşmasıyla ilgili bilgiler. Reklam etkinliği türleri
kullanıcıları eyleme zorlamak için kullandıkları yönergelerdir ve
yapılandırmalarına yardımcı olur. Reklam sayaçlarını şu zamanda artırmak için:
Bir etkinlikte, cihaz üzerindeki aktör, kazanan reklam açık artırmasının reklam seçim kimliğini sağlar.
Reklam sayacı anahtarları, alıcı reklamı tarafından atanan rastgele 32 bit imzalı tam sayılardır ve TTP tarafından tanımlanan belirli bir reklam grubuna karşılık gelir. Reklamdan bu yana Sayaç anahtarları yalnızca belirli bir TTP'ye ait reklamlarla sınırlıdır. Bu anahtarlar başka bir reklam teknolojisine ait histogramlarla çakışmadan seçilir. Reklam sayacı anahtarlar, bir TTP'nin reklamları genelinde veya belirli bir bölümde DSP'ye özel tanımlayıcıları artırmak için kullanılır gelecekteki açık artırmalarda yer alan reklamları filtrelemek için belirli bir özel kitleyi kullanabilirsiniz.
Sayaç anahtarları, yayınlanma olasılığı daha yüksek olan reklamlara öncelik vermek için kullanılabilir belirli bir cihazdaki diğer reklamlarla olan etkileşimine dayalı olarak, belirli bir kullanıcının teknolojisinin aynısını kullanın. Örneğin, yüksek seviyede puan alan bir reklam ve tıklamalardan elde edilen etkileşimlerin, reklam açık artırmalarının, görüntüleme veri noktası. Bu noktayı daha ayrıntılı açıklamak gerekirse: sol elle golf sopalarına ilişkin bir reklam kullanıcının sağ elini kullanmak istemeyeceğine işaret edebilir. CEVAP sol yönlü reklamlara atanan bir sayaç tuşu için sıklık sınırı filtresi sağ elle tutuşan sopalarla ilgili reklamları filtreleyin.
Açık artırmanızda sıklık sınırını kullanmak için öncelikle
Aşağıda gösterildiği gibi KeyedFrequencyCap
nesne var:
Kotlin
// Value used when incrementing frequency counter
val adCounterKey = 123
// Frequency cap exceeded after 2 counts
val keyedFrequencyCapForImpression: KeyedFrequencyCap = Builder(
adCounterKey, 2, Duration.ofSeconds(10)
).build()
// Frequency cap exceeded after 1 counts
val keyedFrequencyCapForImpression: KeyedFrequencyCap = Builder(
adCounterKey, 1, Duration.ofSeconds(10)
).build()
Java
// Value used when incrementing frequency counter
int adCounterKey = 123;
// Frequency cap exceeded after 2 counts
KeyedFrequencyCap keyedFrequencyCapForImpression =
new KeyedFrequencyCap.Builder(
adCounterKey, 2, Duration.ofSeconds(10)
).build();
// Frequency Cap exceeded after 1 counts
KeyedFrequencyCap keyedFrequencyCapForClick =
new KeyedFrequencyCap.Builder(
adCounterKey, 1, Duration.ofSeconds(10)
).build();
KeyedFrequencyCap
nesne oluşturulduktan sonra bunları bir
AdFilters
nesne algılandı.
Kotlin
val filters: AdFilters = Builder()
.setFrequencyCapFilters(
Builder()
.setKeyedFrequencyCapsForImpressionEvents(
ImmutableObject.of(keyedFrequencyCapForImpression)
)
.setKeyedFrequencyCapsForClickEvents(
ImmutableObject.of(keyedFrequencyCapForClick)
)
).build()
Java
AdFilters filters = new AdFilters.Builder()
.setFrequencyCapFilters(new FrequencyCapFilters.Builder()
.setKeyedFrequencyCapsForImpressionEvents(
ImmutableObject.of(keyedFrequencyCapForImpression)
)
.setKeyedFrequencyCapsForClickEvents(
ImmutableObject.of(keyedFrequencyCapForClick)
)
).build();
AdFilters
nesnesi sıklık sınırı filtreleriyle doldurulduğunda
özel kitle oluşturulduğunda aktarılır:
Kotlin
// Initialize a custom audience.
val audience: CustomAudience = Builder()
.setBuyer(buyer)
.setName(name)
.setAds(
listOf(
Builder()
.setRenderUri(renderUri)
.setMetadata(JSONObject().toString())
.setAdFilters(filters)
.setAdCounterKeys(adCounterKeys)
.build()
)
).build()
Java
// Initialize a custom audience.
CustomAudience audience = new CustomAudience.Builder()
.setBuyer(buyer)
.setName(name)
.setAds(Collections.singletonList(new AdData.Builder()
.setRenderUri(renderUri)
.setMetadata(new JSONObject().toString())
.setAdFilters(filters)
.setAdCounterKeys(adCounterKeys)
.build()))
.build();
Sıklık sınırı filtreleri özel bir kitleye uygulandığında, SSP ve ardından gerekli tıklama, görüntüleme veya gösterim etkinliklerini çağırır.
Kotlin
val callerAdTech: AdTechIdentifier = mAdSelectionConfig.getSeller()
val request: UpdateAdCounterHistogramRequest = Builder(
adSelectionId,
FrequencyCapFilters.AD_EVENT_TYPE_CLICK, //CLICK, VIEW, or IMPRESSION
callerAdTech
).build()
Java
AdTechIdentifier callerAdTech = mAdSelectionConfig.getSeller();
UpdateAdCounterHistogramRequest request =
new UpdateAdCounterHistogramRequest.Builder(
adSelectionId,
FrequencyCapFilters.AD_EVENT_TYPE_CLICK, //CLICK, VIEW, or IMPRESSION
callerAdTech
).build();
Önceden belirlenmiş sıklık sınırı filtre sınırlarına ulaşan reklamlar filtrelenir elde etmeye başladı. Filtreleme, teklif mantığı yürütülmeden önce gerçekleşir. cihaz üzerinde açık artırmalar yapabilir ve Teklif Verme ve Açık artırma açık artırmaları kullanır.Bu araç seti, reklam teknisyenlerine her bir elektronik tabloda Reklama odaklanmak için kullanıcılarla ve özel kitlelerindeki reklamlar arasındaki etkileşimler hem de reklama aşırı maruz kalma oranını en aza indirir.
Ağ çağrıları olmadan içeriğe dayalı reklam filtreleme
Cihazda yeniden pazarlama talebi yoksa şunun için reklam seçimi çalıştırabilirsiniz: ağ aramaları içermeyen bağlamsal reklamlar Önceden oluşturulmuş URI'lar ve bağlamsal reklamları tekliflerle birlikte kullandığınızda, platform teklif mantığı ve teklif sinyalleri ve puanlama sinyalleri gibi. Platform, seçmek için önceden oluşturulmuş bir URI kullanır en yüksek teklifi veren içeriğe dayalı reklam
Gecikmeyi iyileştirmek için reklam teknolojileri yalnızca şunları içeren bir reklam seçimi akışı çalıştırabilir:
(ağ çağrıları olmadan reklam filtreleme işlevine sahip içeriğe dayalı reklamlar) Bu
, puanlama sinyalleri için önceden oluşturulmuş URI'lar kullanılarak elde edilir. Daha fazla bilgi için Desteklenen
scoreAds
listesi için önceden oluşturulmuş URI kullanım alanları ve adları bölümü
hakkında bilgi edindiniz.
Reklam seçimini ağ çağrıları olmadan çalıştırmak için:
- Reklam filtrelemeyi ayarlama
- İçeriğe dayalı reklamlarınızı oluşturma
Aşağıdakileri içeren bir
AdSelectionConfig
nesnesi oluşturun:- Boş alıcı listesi
- En yüksek teklifi seçmek için önceden oluşturulmuş bir URI
- Bağlama dayalı reklamlar
- Puanlama sinyalleri için boş bir URI. Boş URI, kullanabilirsiniz:
Uri prebuiltURIScoringUri = Uri.parse("ad-selection-prebuilt://ad-selection/highest-bid-wins/?reportingUrl=your.registered.uri/reporting"); // Initialize AdSelectionConfig AdSelectionConfig adSelectionConfig = new AdSelectionConfig.Builder() .setSeller(seller) .setDecisionLogicUri(prebuiltURIScoringUri) .setCustomAudienceBuyers(Collections.emptyList()) .setAdSelectionSignals(adSelectionSignals) .setSellerSignals(sellerSignals) .setPerBuyerSignals(perBuyerSignals) .setBuyerContextualAds(buyerContextualAds) .setTrustedScoringSignalsUri(Uri.EMPTY) .build();
Reklam seçimini çalıştır:
adSelectionManager.selectAds( adSelectionConfig, executor, outcomeReceiver);
Önceden oluşturulmuş URI'leri kullanırken kendi raporlama JavaScript'inizi çalıştırın
Şu anda Özel Korumalı Alan platformunda yalnızca temel raporlama JavaScript'i vardır.
önceden oluşturulmuş URI'lar için
uygulanabilir. Kendi kampanyalarınızı
Düşük gecikmeli bir reklam için önceden oluşturulmuş URI'lar kullanırken JavaScript raporlaması yapma
reklam seçimi ile reklam seçimi arasındaki DecisionLogicUri
değerini geçersiz kılabilirsiniz.
raporlamanın nasıl çalıştığını gösterir.
- Önceden oluşturulmuş URI'lar kullanarak içeriğe dayalı reklamlar için reklam seçimi çalıştırmaya yönelik adımları çalıştırın
Raporlamayı çalıştırmadan önce
AdSelectionConfig
verilerinizin bir kopyasını oluşturunadSelectionConfigWithYourReportingJS = adSelectionConfig.cloneToBuilder() // Replace <urlToFetchYourReportingJS> with your own URL: .setDecisionLogicUri(Uri.parse(<urlToFetchYourReportingJS>)) .build();
Gösterim raporları çalıştırma
// adSelectionId is from the result of the previous selectAds run ReportImpressionRequest request = new ReportImpressionRequest( adSelectionId, adSelectionConfigWithYourReportingJS); adSelectionManager.reportImpression( request, executor, outcomeReceiver);
Şelale uyumlulaştırması çalıştır
Şelale uyumlulaştırması, birden fazla üçüncü taraf SDK'nın (3. taraf ağlar) birinci taraf SDK uyumlulaştırma ağı tarafından düzenlenir. Şelale uyumlulaştırması veya açık artırmanın cihaz üzerinde ya da cihazda gerçekleştirilmiş Teklif verme ve Açık artırma hizmetleri (B&A).
3. taraf ağlar
3. taraf ağların, uyumlulaştırma ağının Açık artırma yürütmek için gerekli yöntemleri çağırmak
- Reklam seçimini yayınla
- Rapor gösterimleri
Aşağıda, bir uyumlulaştırma ağ bağdaştırıcısı örneği verilmiştir:
Kotlin
class NetworkAdaptor {
private val adSelectionManager : AdSelectionManager
init {
adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
}
fun selectAds() {...}
fun reportImpressions() {...}
}
Java
class NetworkAdaptor {
AdSelectionManager adSelectionManager;
public NetworkAdaptor() {
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
}
public void selectAds() {...}
public void reportImpressions() {...}
}
Her SDK'nın kendi reklam seçimi hizmet yöneticileri ve istemcileri vardır.
selectAds
ve reportImpressions
uygulaması. SDK sağlayıcılar,
cihaz üzerinde açık artırmalar için reklam seçiminin nasıl yayınlanacağı veya B&A
açıklayıcısı ele alacağız. Reklam bildirme işleminin nasıl yapılacağını izleyin
gösterim (daha sonra tek STP gösterimi raporlaması
raporlama.
Uyumlulaştırma ağı
3. taraf ağlara benzer şekilde, uyumlulaştırma ağları için selectAds
ve
reportImpression
uygulama. Reklam yayınlamayla ilgili bölümlere bakın
seçimi ve reklam gösterimlerinin nasıl raporlanacağı hakkında daha fazla bilgi edinin.
Uyumlulaştırma ağları, uyumlulaştırma zincirini çalıştırmaktan ve uyumlulaştırma zincirinde yer alır. Sonraki bölümde, ayarlarınızı nasıl ve ne zaman bu süreci yürütür.
Uyumlulaştırma zinciri ve teklif tabanlarını alma
Uyumlulaştırma ağı, birinci tarafın (birinci taraf) alınmasından sorumludur
bağlamsal reklamlar, uyumlulaştırma zinciri ve üçüncü taraf ağlar teklif tabanları (3. taraf). Bu
uyumlulaştırma tarafından yürütülen bağlamsal reklamları alma isteğinde gerçekleşebilir
ağ. Uyumlulaştırma zinciri, üçüncü taraf ağlar üzerinden nasıl yineleme yapılacağını belirler.
ve teklif tabanları açık artırma sürecine adSelectionSignals
olarak iletilebilir.
Uyumlulaştırma zincirinde ağ yerleşimi
Uyumlulaştırma SDK'sı, yayındaki eBGBM'sine göre kendisini uyumlulaştırma zincirine yerleştirebilir
%41 daha yüksek. Protected Audience API'de reklam teklifleri opaktır. Arabuluculuk
SDK, birinci taraf karşılaştırması yapabilmek için AdSelectionFromOutcomesConfig
kullanmalıdır.
reklamın teklifini, zincirdeki bir sonraki 3. taraf ağının teklif tabanına göre ayarlayabilirsiniz. Birinci taraf teklifi
teklif tabanının üzerinde olması, uyumlulaştırma SDK'sının
ön plana yerleştirilir.
arasında yer alır.
Reklam seçimini yayınla
Uyumlulaştırma ağı, birinci taraf reklam adayını almak için cihaz üzerinde bir anlaşma yürütebilir.
reklam seçimini yayınlama bölümündeki adımları uygulayarak açık artırmayı etkinleştirin. Bu,
1. taraf reklam adayı, teklif ve uyumlulaştırmada kullanılan AdSelectionId
bahsedeceğim.
AdSelectionFromResultsConfig oluşturma
AdSelectionFromOutcomesConfig
, uyumlulaştırma ağının listeyi aktarmasına olanak tanır
AdSelectionIds
(önceki açık artırmaların sonuçları), reklam seçimi sinyalleri ve
Birden çok aday arasından bir reklam seçen JavaScript'i getirmek için bir URI. Liste
teklifleri ve sinyalleri ile birlikte AdSelectionId'nin
Teklifi geçerse AdSelectionIds
özelliklerinden birini döndürebilen JavaScript
taban veya "yok" değerini seçin.
Uyumlulaştırma Ağları birinci taraf kullanarak bir AdSelectionFromOutcomesConfig
oluşturur
Önceki bölümden AdSelectionId
ve Üçüncü Taraf Ağı için teklif tabanı
düşünmeleri gerekir. Yeni bir AdSelectionFromOutcomesConfig
oluşturulmalıdır
her adım için ayrı ayrı gösterilir.
Kotlin
fun runSelectOutcome(
adSelectionClient : AdSelectionClient,
outcome1p : AdSelectionOutcome,
network3p : NetworkAdapter) : ListenableFuture<AdSelectionOutcome?> {
val config = AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(listOf(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.build()
return adSelectionClient.selectAds(config)
}
Java
public ListenableFuture<AdSelectionOutcome> runSelectOutcome(AdSelectionOutcome outcome1p,
NetworkAdapter network3p) {
AdSelectionFromOutcomesConfig config = new AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(Collection.singletonList(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.build();
return adSelectionClient.selectAds(config){}
}
Şelale uyumlulaştırması için selectAds()
yöntemini geçersiz kılma işlemi için bir
Aşağıdakileri belirtmeniz gereken AdSelectionFromOutcomesConfig
girişi
gerekli parametreler:
- Satıcı: Reklam seçimini başlatan satıcı reklam ağının tanımlayıcısı.
- AdSelectionIds: Birinci taraf için önceki
selectAds()
çalıştırmasının tekli listesi reklam. - Reklam seçimi sinyalleri: Dize olarak serileştirilmiş bir JSON nesnesi; şunları içerir: sinyallerine geçiş yapacaktır. Bu durumda, belirtilen 3. taraf ağı için alındı.
- Selection Logic URI (Seçim Mantığı URI'si): Reklam seçimi sırasında
kazanan reklamı seçmek için uyumlulaştırma ağının JavaScript'ini kullanır. Şunlara bakın:
işlev imzalarını kullanmanız gerekir. JavaScript,
Teklif, teklif tabanından yüksekse 3. taraf reklamı veya aksi takdirde
null
değerini döndürür. Bu, bir kazanan olduğunda uyumlulaştırma SDK'sının uyumlulaştırma zincirini kesmesine olanak tanır. bulundu.
AdSelectionOutcomesConfig
oluşturulduktan sonra, şunun selectAds()
yöntemini çağırın:
zincirdeki ilk sırada yer alan 3. taraf ağıdır.
Kotlin
val adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
// Initialize AdSelectionFromOutcomesConfig
AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig =
AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(listof(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.setAdSelectionIds(outcomeIds)
.build()
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionFromOutcomesConfig,
executor,
outcomeReceiver)
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize AdSelectionFromOutcomesConfig
AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig =
new AdSelectionFromOutcomesConfig.Builder()
.setSeller(seller)
.setAdSelectionIds(Collection.singletonList(outcome1p))
.setSelectionSignals({"bid_floor": bid_floor})
.setSelectionLogicUri(selectionLogicUri)
.setAdSelectionIds(outcomeIds)
.build();
// Run ad selection with AdSelectionConfig
adSelectionManager.selectAds(
adSelectionFromOutcomesConfig,
executor,
outcomeReceiver);
Şelale uyumlulaştırmasını düzenleme
Aşağıda, uyumlulaştırma üzerinden yürütülen işlem sırası verilmiştir bahsedeceğim.
- Birinci taraf reklam seçimini yayınla.
- Uyumlulaştırma zincirinde yineleme yapın. Her bir 3. taraf ağı için aşağıdakileri yapın:
- Birinci taraf
outcomeId
veAdSelectionFromOutcomeConfig
3. taraf SDK'sının teklif tabanı. - Önceki adımdaki yapılandırmayı kullanarak
selectAds()
öğesini çağırın. - Sonuç boş değilse reklamı döndürün.
- Geçerli SDK ağ bağdaştırıcısının
selectAds()
yöntemini çağırın. Sonuç boş değilse reklamı döndürün.
- Birinci taraf
- Zincirde kazanan bulunamazsa birinci taraf reklamı döndürün.
Kotlin
fun runWaterfallMediation(mediationChain : List<NetworkAdapter>)
: Pair<AdSelectionOutcome, NetworkAdapter> {
val outcome1p = runAdSelection()
var outcome : AdSelectionOutcome
for(network3p in mediationChain) {
outcome = runSelectOutcome(outcome1p, network3p)
if (outcome1p.hasOutcome() && outcome.hasOutcome()) {
return Pair(outcome, this)
}
outcome = network3p.runAdSelection()
if(outcome.hasOutcome()) {
return Pair(outcome, network3p)
}
}
return Pair(outcome1p, this)
}
Java
class MediationNetwork {
AdSelectionManager adSelectionManager;
public MediationNetwork() {
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
}
public void runAdSelection() {...}
public void reportImpressions() {...}
public Pair<AdSelectionOutcome, NetworkAdapter> runWaterfallMediation(
List<NetworkAdapter> mediationChain) {
AdSelectionOutcome outcome1p = runAdSelection();
AdSelectionOutcome outcome;
for(NetworkAdapter network3p: mediationChain) {
if (outcome1p.hasOutcome() &&
(outcome = runSelectOutcome(outcome1p, network3p)).hasOutcome()) {
return new Pair<>(outcome, this);
}
if((outcome = network3p.runAdSelection()).hasOutcome()) {
return new Pair<>(outcome, network3p);
}
}
return new Pair<>(outcome1p, this);
}
/* Runs comparison by creating an AdSelectionFromOutcomesConfig */
public AdSelectionOutcome runSelectOutcome(AdSelectionOutcome outcome1p,
NetworkAdapter network3p) { ... }
}
Reklam gösterimlerini raporla
Açık artırmanın nasıl gerçekleştiğine bağlı olarak bir reklam gösterimini raporlamak için iki akış vardır çalıştırılıyor. Açık artırma yürüten tek bir STP iseniz bu bölümü takip edin. Eğer Şelale uyumlulaştırmasını uygulayacaksanız şu adımları izleyin: şelale uyumlulaştırması gösterim raporlama bölümünü inceleyin.
Tek STP gösterimi raporlama
Reklam seçimi iş akışında kazanan reklam seçildikten sonra,
Gösterimi katılımcı alıcı ve satış tarafı platformlarına bildirir
AdSelectionManager.reportImpression()
yöntemiyle deneyin. Bir reklamı bildirmek için
gösterim:
- Bir
AdSelectionManager
nesnesini başlatın. - Reklam seçim kimliğiyle bir
ReportImpressionRequest
nesnesi oluşturun. - Eşzamansız
reportImpression()
yönteminiReportImpressionRequest
nesnesi ile alakalıExecutor
veOutcomeReceiver
nesneleri.
Java
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize a ReportImpressionRequest
ReportImpressionRequest reportImpressionRequest =
new ReportImpressionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setAdSelectionConfig(adSelectionConfig)
.build();
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportImpression(
reportImpressionRequest,
executor,
outcomeReceiver);
Kotlin
val adSelectionManager = context.getSystemService(AdSelectionManager::class.java)
// Initialize a ReportImpressionRequest
val adSelectionConfig: ReportImpressionRequest =
ReportImpressionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setAdSelectionConfig(adSelectionConfig)
.build()
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportImpression(
reportImpressionRequest,
executor,
outcomeReceiver)
ReportImpressionRequest
hizmetini aşağıdaki gerekli bilgilerle başlatın
parametre:
- Reklam seçimi kimliği: Yalnızca bir cihaz kullanıcısına özel, başarılı reklam seçimi.
- Reklam seçimi yapılandırması:
selectAds()
içinde kullanılan aynı yapılandırma sağlanan reklam seçim kimliğiyle tanımlanan çağrıdır.
Eşzamansız reportImpression()
yöntemi, OutcomeReceiver
yöntemini kullanır
nesnesini ifade eder.
onResult()
geri çağırması, gösterim raporlama URL'lerinin ve istek planlandı.onError()
geri çağırması aşağıdaki olası koşulları belirtir:- Çağrı, geçersiz bir giriş bağımsız değişkeniyle başlatılırsa
AdServicesException
,IllegalArgumentException
öğesini şu şekilde belirtir: neden olabilir. - Diğer tüm hatalar için
AdServicesException
IllegalStateException
nedeni gösterilir.
- Çağrı, geçersiz bir giriş bağımsız değişkeniyle başlatılırsa
Şelale uyumlulaştırması gösterim raporlaması
Uyumlulaştırma SDK'sının, kendi dönüşüm izleme özelliğini tetiklemesi için kazanan SDK'yı raporlama akışlarından faydalanır. Uyumlulaştırma zincirinde yer alan SDK'lar yöntemini çağırın. SDK Uyumlulaştırılmış bir açık artırmaya katıldığınızda, dönüşüm işlemini uygulamak için yukarıdaki adımları raporlayabilir.
STP'ler, bu üçüncü taraf SDK kodu örneğini nasıl katılacaklarına dair prototip olarak kullanabilir uyumlulaştırma akışları:
Pair<AdSelectionOutcome, NetworkAdapter> winnerOutcomeAndNetwork =
mediationSdk.orchestrateMediation(mediationChain);
if (winner.first.hasOutcome()) {
winner.second.reportImpressions(winner.first.getAdSelectionId());
Gösterim raporlama uç noktaları
Rapor gösterimi API'si, satıcı tarafı platformu ve kazanan alıcı tarafı platformu:
Alıcı tarafı platformu uç noktası:
- API, aşağıdaki işlemler için özel kitlede belirtilen Teklif verme mantık URL'sini kullanır: döndürme mantığı içeren ve alıcı tarafından sağlanan JavaScript'i gösterim raporlama URL'si.
- Döndürülmesi beklenen
reportWin()
JavaScript işlevini çağırın alıcının gösterim raporlama URL'si.
Satıcı tarafı platformu uç noktası:
AdSelectionConfig
içinde belirtilen Karar mantığı URL'sini kullanın Nesnesi'ni tanımlayın.reportResult()
Satıcının gösterim raporlama URL'si.
Teklif verme ve Açık artırma hizmetlerini raporlama
Teklifli sistem ve Açık artırma hizmetlerinde, reklam etkileşimi raporlaması için oluşturulan URL'ler dahil olmak üzere raporlama bilgilerini sunucu tarafı açık artırmadan gelen şifrelenmiş yanıta dahil edilir. şifresi çözülürse uygun URL'ler platforma kaydedilir. reklam ve gösterim raporlamasında yukarıda listelenen adımlar izlenir.
En iyi sonuç Gösterim raporlama
reportImpression()
yöntemi, test sürecinin en iyi şekilde tamamlanmasını sağlamak için tasarlanmıştır.
raporlama.
Reklam Etkileşimlerini Bildirme
Protected Audience, aşağıdakiler için daha ayrıntılı etkileşimler hakkında rapor oluşturma desteği sağlar: oluşturulmuş reklamdır. Bunlar arasında görüntüleme zamanı, tıklamalar, fareyle üzerine gelme ve veya toplanabilecek başka bir faydalı metrik. Bu alma süreci iki adım gerekir. Öncelikle, alıcıların ve satıcıların bu raporları raporlama JavaScript'ine ekleyin. Ardından müşterinin bu etkinlikleri raporlayabilirsiniz.
Etkileşim etkinliklerini almak için kaydolma
Etkileşim etkinliklerine kaydolma işlemi, alıcının reportWin()
ve
satıcının reportResult()
JavaScript işlevi bir JavaScript işlevi kullanıyor
sağlayan: registerAdBeacon
. Kaydolarak
raporlamanız için platformun JavaScript İşlevini çağırmanız yeterlidir.
JavaScript'e dokunun. Aşağıdaki snippet bir alıcının reportWin()
özelliğini kullanıyor, ancak
yaklaşımı reportResult()
için geçerlidir.
reportWin(
adSelectionSignals,
perBuyerSignals,
signalsForBuyer,
contextualSignals,
customAudienceSignals) {
...
// Calculate reportingUri, clickUri, viewUri, and hoverUri
registerAdBeacon({"click": clickUri, "view": viewUri, "hover": hoverUri});
return reportingUri;
}
Etkileşim etkinliklerini raporlama
Bir gösterim bildirildikten sonra, müşteriler etkileşimleri tekrar
daha önce kaydedilmiş kazanan alıcı ve satış tarafı platformları
AdSelectionManager.reportInteraction()
yöntemini çağırın. Bir reklam etkinliğini bildirmek için:
- Bir
AdSelectionManager
nesnesini başlatın. - Reklam seçim kimliğiyle bir
ReportInteractionRequest
nesnesi oluşturun. etkileşim anahtarı, etkileşim verileri ve raporlama hedefi. request
nesnesiyle eşzamansızreportInteraction()
yöntemini çağırın ve alakalıExecutor
ileOutcomeReceiver
nesnelerini kullanabilirsiniz.
AdSelectionManager adSelectionManager =
context.getSystemService(AdSelectionManager.class);
// Initialize a ReportInteractionRequest
ReportInteractionRequest request =
new ReportInteractionRequest.Builder()
.setAdSelectionId(adSelectionId)
.setInteractionKey("view")
.setInteractionData("{ viewTimeInSeconds : 1 }") // Can be any string
.setReportingDestinations(
FLAG_REPORTING_DESTINATION_BUYER | FLAG_REPORTING_DESTINATION_SELLER
)
.build();
// Request to report the impression with the ReportImpressionRequest
adSelectionManager.reportInteraction(
reportImpressionRequest,
executor,
outcomeReceiver);
ReportInteractionRequest
hizmetini aşağıdaki gerekli bilgilerle başlatın
parametre:
- Reklam seçimi kimliği: Daha önce döndürülen bir reklam seçimi kimliği
AdSelectionOutcome
. - Etkileşim Anahtarı: Müşteri tarafından tanımlanan, işlemi açıklayan bir dize anahtarı raporlanıyor. Bu, satıcı veya satıcı tarafından kaydedilen anahtarla eşleşmelidir raporlama JavaScript işlevlerindeki alıcı.
- Etkileşim Verileri: Etkinliğe dahil edilecek verileri içeren bir dize raporlama sunucularına geri POSTA gönderilmek üzere gönderilir.
- Raporlama Hedefleri: Etkinliklerin gerçekleşip gerçekleşmeyeceğini belirten bir bit maskesi
alıcıya, satıcıya veya her ikisine birden bildirilir. Bu flag'ler
platform ve son hedef maskesi, bit tabanlı yöntemle oluşturulabilir.
anlamına gelir. Tek bir hedefe yönelik rapor oluşturmak için
platforma doğrudan erişim sağlar. Birden çok hedefe yönelik rapor oluşturmak için bit tabanlı
VEYA (
|
) işaretini kullanın.
Eşzamansız reportInteraction()
yöntemi, OutcomeReceiver
yöntemini kullanır
nesnesini ifade eder.
onResult()
geri çağırması, rapor etkileşim çağrısının geçerli olduğunu gösterir.onError()
geri çağırması aşağıdaki olası koşulları belirtir:- Arama, uygulama arka planda çalışırken yapılırsa
Hatanın açıklamasını içeren
IllegalStateException
döndürülür. - İstemcinin
reportInteraction()
çağrısı yapması kısıtlanırsaLimitExceededException
döndürüldü. - Paket, gizliliği koruyan API'leri çağırmak üzere kaydedilmemişse
SecurityException()
döndürüldü. - Uygulama raporlama etkileşimleri,
selectAds()
, birIllegalStateException
döndürülür.
- Arama, uygulama arka planda çalışırken yapılırsa
Hatanın açıklamasını içeren
- Kullanıcı, Özel Korumalı Alan API'lerinin etkinleştirilmesine izin vermediyse çağrının başarısız olur.
Etkileşim raporlama uç noktaları
Rapor etkileşimi API'si, satıcı tarafı platformu ve kazanan alıcı tarafı platformu. Korunan kitle etkileşim anahtarlarını, raporlama JavaScript'inde belirtilen URI'lerle eşleştirir ve bildirilen her etkileşim için her bir uç noktaya bir POST isteği gönderin. İsteğin içerik türü düz metindir ve gövde Etkileşim Verileri.
En iyi sonuç etkileşim raporlaması
reportInteraction()
, projenizin tamamlanması için kullanılabilecek en iyi çabayı sunacak şekilde tasarlanmıştır.
raporlama için kullanılır.
Günlük arka plan güncellemesi
Özel kitle oluştururken uygulamanız veya SDK'nız özel kitleyi başlatabilir meta verilerdir. Ayrıca, platform aşağıdaki özel parçaları da güncelleyebilir günlük arka plan güncelleme işlemine tabi kitle meta verileri.
- Kullanıcı teklif sinyalleri
- Güvenilir teklif verileri
AdData
listesi
Bu işlem, özel kitlede tanımlanan Günlük güncelleme URL'sini sorgular ve URL bir JSON yanıtı döndürebilir.
- JSON yanıtı, desteklenen meta veri alanlarının herhangi birini içerebilir. emin olun.
- Her JSON alanı bağımsız olarak doğrulanır. İstemci, kullandığı o alanda güncelleme yapılmamasına neden olan hatalı biçimlendirilmiş alanlar yanıt verelim.
- Boş bir HTTP yanıtı veya boş JSON nesnesi "
{}
" sonuç "hayır" meta veri güncellemeleri. - Yanıt iletisi boyutu 10 KB ile sınırlı olmalıdır.
- Tüm URI'ların HTTPS kullanması gerekir.
trusted_bidding_uri
, alıcı ile aynı ETLD+1'i paylaşmalıdır.
Örnek: Arka planda günlük güncelleme için JSON yanıtı
{
"user_bidding_signals" : { ... }, // Valid JSON object
"trusted_bidding_data" : {
"trusted_bidding_uri" : 'example-dsp1-key-value-service.com',
"trusted_bidding_keys" : [ 'campaign123', 'campaign456', ... ]
},
'ads' : [
{
"render_uri" : 'www.example-dsp1.com/.../campaign123.html',
'metadata' : { ... } // Valid JSON object
},
{
"render_uri" : 'www.example-dsp1.com/.../campaign456.html',
'metadata' : { ... } // Valid JSON object
},
...
]
}
Reklam seçimi için JavaScript
Reklam seçimi iş akışı, alıcı tarafından sağlanan ve Satıcı tarafından sağlanan JavaScript.
Alıcı tarafından sağlanan JavaScript, Özel kitle. Döndürülen JavaScript aşağıdaki işlevleri içermelidir:
Satıcı tarafından sağlanan JavaScript,
Reklam seçim API'sinin AdSelectionConfig
parametresi. Döndürülen
JavaScript aşağıdaki işlevleri içermelidir:
generateBid()
function generateBid(
ad,
auction_signals,
per_buyer_signals,
trusted_bidding_signals,
contextual_signals,
user_signals,
custom_audience_bidding_signals) {
return {'status': 0, 'ad': ad, 'bid': ad.metadata.result };
}
Giriş parametreleri:
ad
: Şu biçime sahip bir JSON nesnesi:var ad = { 'render_url': url, 'metadata': json_metadata };
auction_signals, per_buyer_signals
: Açık artırmada belirtilen JSON nesneleri yapılandırma nesnesicustom_audience_bidding_signals
: Platform tarafından oluşturulan JSON nesnesi. İlgili içeriği oluşturmak için kullanılan bu JSON nesnesinin biçimi şöyledir:var custom_audience_signals = { "owner":"ca_owner", "buyer":"ca_buyer", "name":"ca_name", "activation_time":"ca_activation_time_epoch_ms", "expiration_time":"ca_expiration_time_epoch_ms", "user_bidding_signals":"ca_user_bidding_signals" }
Bu örnekte:
owner
,buyer
vename
, reklam seçimine katılan Özel Kitlenin aynı adıactivation_time
veexpiration_time
, etkinleştirme ve özel kitlenin süresinin dolması. Unix'ten bu yana geçen saniye cinsinden ifade edilir. dönemca_user_bidding_signals
, Oluşturma sırasındaCustomAudience
öğesininuserBiddingSignals
alanıtrusted_bidding_signals, contextual_signals
veuser_signals
JSON'dir nesneler'i tıklayın. Bunlar boş nesneler olarak aktarılır ve yayınlayabileceksiniz. Biçimleri platform tarafından zorunlu kılınmaz ve yönetilir ortaya çıkarıyor.
Sonuç:
ad
: Teklifin ilişkili olduğu reklamdır. Komut dosyasının farklı meta verilere sahip olarak aldığı bir reklamdır. Etiketinrender_url
özelliği reklamın değiştirilmemiş olması beklenir.bid
: Bu reklamın teklif değerini temsil eden kayan noktalı değerstatus
: Aşağıdaki gibi olabilecek bir tam sayı değeri:0
: Başarılı bir yürütme için1
: (veya sıfır olmayan herhangi bir değer) giriş sinyallerinden herhangi birinin geçersiz olması durumunda. İçinde "teklif oluştur-ver" tarafından sıfır dışında bir değer döndürülürse teklif verme süreci tüm CA reklamları için geçersiz kılındı
scoreAd()
function scoreAd(
ad,
bid,
ad_selection_config,
seller_signals,
trusted_scoring_signals,
contextual_signal,
user_signal,
custom_audience_signal) {
return {'status': 0, 'score': score };
}
Giriş parametreleri:
ad
:generateBid
belgelerini gösterbid
: reklamın teklif değeridirad_selection_config
: temsil eden bir JSON nesnesiselectAds
API'ninAdSelectionConfig
parametresi. Biçim şununla eşleşir:var ad_selection_config = { 'seller': 'seller', 'decision_logic_url': 'url_of_decision_logic', 'custom_audience_buyers': ['buyer1', 'buyer2'], 'auction_signals': auction_signals, 'per_buyer_signals': per_buyer_signals, 'contextual_ads': [ad1, ad2] }
seller_signals
:sellerSignals
öğesinden okunan JSON nesneleriAdSelectionConfig
API parametresitrusted_scoring_signal
:adSelectionSignals
alanından okumaAdSelectionConfig
API parametresicontextual_signals, user_signals
: JSON nesneleri. Şu anda boş nesnelerden oluşur ve gelecekteki sürümlerde bu alanlar doldurulacaktır. Biçimi şu değil: reklam teknolojisi tarafından yönetilir.per_buyer_signals
: Şu sayfadakiperBuyerSignal
haritasından okunan JSON nesnesi Geçerli Özel'i anahtar olarak kullananAdSelectionConfig
API parametresi Kitle alıcısı. Haritada, belirtilen belirleyecek olan kişidir.
Çıkış:
score
: Bu reklamın puan değerini temsil eden kayan noktalı değerstatus
: Aşağıdaki gibi olabilecek bir tam sayı değeri:- 0: başarılı bir yürütme için
- 1:
customAudienceSignals
geçersizse - 2:
AdSelectionConfig
geçersizse - 3: diğer sinyallerden herhangi birinin geçersiz olması durumunda
- Sıfır olmayan herhangi bir değer işlemin başarısız olmasına neden olur. atılan istisna türünü belirler
selectOutcome()
function selectOutcome(
outcomes,
selection_signals) {
return {'status': 0, 'result': null};
}
Giriş parametreleri:
outcomes
: Bir JSON nesnesi{"id": id_string, "bid": bid_double}
selection_signals
: Açık artırma yapılandırmasında belirtilen JSON nesneleri nesne
Çıkış:
status
: Başarı için0
, başarısızlık için sıfır değerliresult
: Biri veya null olarak aktarılan sonuçlar
reportResult()
function reportResult(ad_selection_config, render_url, bid, contextual_signals) {
return {
'status': status,
'results': {'signals_for_buyer': signals_for_buyer, 'reporting_url': reporting_url }
};
}
Giriş parametreleri:
ad_selection_config
:scoreAds
belgelerine bakınrender_url
: kazanan reklamın oluşturma URL'sibid
: kazanan reklam için sunulan tekliftircontextual_signals
:generateBid
belgelerine bakın
Çıkış:
- Başarı için
status: 0
, başarısızlık için sıfır olmamalıdır results
: Şunları içeren JSON nesneleri:signals_for_buyer
:reportWin
öğesine geçirilen bir JSON nesnesi işlevreporting_url
: Platform tarafından alıcıya gösterim
reportWin()
function reportWin(
ad_selection_signals,
per_buyer_signals,
signals_for_buyer,
contextual_signals,
custom_audience_signals) {
return {'status': 0, 'results': {'reporting_url': reporting_url } };
}
Giriş parametreleri:
ad_selection_signals, per_buyer_signals
: belgelerine bakınscoreAd
signals_for_buyer
:reportResult
tarafından döndürülen bir JSON nesnesicontextual_signals, custom_audience_signals
: belgelerine bakıngenerateBid
Çıkış:
- Başarı için
status: 0
, başarısızlık için sıfır olmamalıdır results
: Şunları içeren bir JSON nesnesi:reporting_url
: Platform tarafından satıcıya gösterim
registerAdBeacon()
function registerAdBeacon(
beacons
)
Giriş Parametreleri:
beacons
: Etkileşim anahtarlarının ve anahtar/değer çiftlerinin raporlama URI'leridir. Biçimi şöyledir:let beacons = { 'interaction_key': 'reporting_uri', 'interaction_key': 'reporting_uri', ... }
interaction_key
: Etkinliği temsil eden bir dize. Bu, etkinlik etkileşimlerini raporlarken bu platformunreporting_uri
. Bu anahtarın şunlarla eşleşmesi gerekir: alıcının veya satıcının kaydettiği bilgiler ve satıcının bildirdiği bilgiler.reporting_uri
: Etkinlik raporlarını almak için bir URI. Ürün ayrıntılarıyla raporlamak için de kullanılır. İşlenmesi için bir POST isteğini kabul etmesi gerekir etkinlikle birlikte bildirilen tüm veriler için geçerlidir.
Örneğin:
let beacons = { 'click': 'https://reporting.example.com/click_event', 'view': 'https://reporting.example.com/view_event' }
Reklam Seçimi önceden oluşturulmuş URI'leri
Önceden oluşturulmuş URI'lar, reklam teknisyenlerine reklam için JavaScript işlevleri atama olanağını
AdSelectionConfig
ve sonraki adımlarda
AdSelectionFromOutcomesConfig
sınıf. Önceden oluşturulmuş URI'ler ağ gerektirmez
çağrılarına karşılık gelen
JavaScript komut dosyasını çağırın. Reklam teknolojileri önceden oluşturulmuş URI'lar kullanabilir
barındırmak için kayıtlı bir alan adı ayarlamak zorunda kalmadan.
Önceden oluşturulmuş bir URI aşağıdaki biçim kullanılarak oluşturulur:
ad-selection-prebuilt:<use-case>/<name>?<required-script-generation-parameters>
Özel Korumalı Alan platformu, bu kaynaktaki bilgileri kullanarak JavaScript Çalışma zamanındaki URI.
Aşağıdaki durumlarda IllegalArgumentException
verilir:
- gerekli parametrelerden hiçbiri URI'de yok
- URI'de tanınmayan parametreler var
Desteklenen önceden oluşturulmuş URI kullanım alanları ve adları
1. Kullanım alanı: reklam seçimi
ad-selection
kullanım alanı altındaki önceden oluşturulmuş URI'lar
selectAds(AdSelectionConfig)
akışı.
Önceden oluşturulmuş URI adı: highest-bid-wins
Önceden oluşturulmuş bu URI, en yüksek teklife sahip reklamı seçen bir JavaScript sağlar.
en iyi uygulamaları görelim. Ayrıca, projenizin her aşamasında
kazananın render_uri
ve bid
.
Gerekli parametreler
reportingUrl
:
Kazanan reklamın render_uri
ve bid
:
<reportingUrl>?render_uri=<renderUriOfWinnigAd>&bid=<bidOfWinningAd>
Kullanım
Temel raporlama URL'niz https://www.ssp.com/reporting
ise önceden oluşturulmuş
URI şöyle olur:
`ad-selection-prebuilt://ad-selection/highest-bid-wins/?reportingUrl=https://www.ssp.com/reporting`
2. kullanım alanı: arama-sonuçlarından-reklam-seçimi
ad-selection-from-outcomes
kullanım alanı altındaki önceden oluşturulmuş URI'ler
selectAds(AdSelectionFromOutcomesConfig)
iş akışı.
Önceden oluşturulmuş URI adı: waterfall-mediation-truncation
Önceden oluşturulmuş waterfall-mediation-truncation
URI'si,
JavaScript'in döndürdüğü şelale uyumlulaştırması kesme mantığını uygular
bid
, bid floor
değerinden daha yüksekse veya ona eşitse bir birinci taraf reklamı ve
aksi takdirde null
değerini döndürür.
Gerekli parametreler
bidFloor
: getSelectionSignals()
içinde iletilen teklif taban değerinin anahtarı
uyumlulaştırma SDK'sının reklamıyla karşılaştırılır.
Kullanım
Reklam seçimi sinyalleriniz {"bid_floor": 10}
gibi görünüyorsa sonuçta
önceden oluşturulmuş URI şöyle olur:
`ad-selection-prebuilt://ad-selection-from-outcomes/waterfall-mediation-truncation/?bidFloor=bid_floor`
Test
Protected Audience API'yi kullanmaya başlamanıza yardımcı olmak için örnek uygulamaları hakkında bilgi edinin.GitHub
Ön koşullar
Protected Audience API, reklam seçimi sırasında bazı JavaScript gerektirir ve gösterim raporlaması. Bu JavaScript'i bir test ortamı:
- JavaScript döndüren gerekli HTTPS uç noktalarına sahip bir sunucu çalıştırın
- Yerel bir kaynaktan gerekli kodu sağlayarak uzaktan getirmeyi geçersiz kılın
Her iki yaklaşım da gösterimi işlemek için bir HTTPS uç noktası ayarlanmasını gerektirir raporlama.
HTTPS uç noktaları
Reklam seçimini ve gösterim raporlamasını test etmek için 7 HTTPS ayarlamanız gerekir test cihazınızın veya emülatörünüzün erişebileceği uç noktalar:
- Teklif mantığı JavaScript'ini sunan alıcı uç noktası.
- Teklif sinyallerini yayınlayan uç nokta.
- Karar mantığı JavaScript'ini sunan satıcı uç noktası.
- Puanlama sinyalleri sunan bir uç nokta.
- Kazanan alıcı gösterim raporlama uç noktası.
- Satıcı gösterim raporlama uç noktası.
- Özel bir kitle için günlük güncellemeleri sunan bir uç nokta.
GitHub deposu, kullanım kolaylığı sağlamak için test amacıyla temel JavaScript kodu sağlar amaçlar. Ayrıca, Desteklenen bir örnek veya mikro hizmet platformu. Daha fazla bilgi için projeye bakın BENİOKU.
JavaScript'in uzaktan getirilmesini geçersiz kıl
Bu özellik, uçtan uca testler için kullanılmak üzere tasarlanmıştır. Uzaktan kumandayı geçersiz kılmak için uygulamanız, geliştirici seçenekleri etkin olarak hata ayıklama modunda çalışmalıdır.
Uygulamanızda hata ayıklama modunu etkinleştirmek için aşağıdaki satırı uygulama özelliğini nasıl etkinleştireceğinizi öğrenin:
<application
android:debuggable="true">
Bu geçersiz kılmaların nasıl kullanılacağına ilişkin bir örnek için lütfen Korunan Audience API örnek uygulamasına gidin.
Aşağıdaki gibi reklam seçimi rutinlerini işlemek için kendi özel JavaScript'inizi eklemeniz gerekir: teklif verme, puanlama kararları ve raporlama gibi. Temel JavaScript kodunu bulabilirsiniz: GitHub deposunda gerekli tüm istekleri işleyen örnekler. Protected Audience API örnek uygulaması, olarak kullanmak üzere hazırlar.
Satıcı tarafı ve alıcı tarafı JavaScript getirmesi geçersiz kılınabilir bağımsız olarak, ancak herhangi bir JavaScript'i sunmak için HTTPS uç noktasına ihtiyacınız reklamlar ve URL'ler. Lütfen şunun için README'u inceleyin: sunucu oluşturma hakkında bilgi edinin.
JavaScript getirmeyi yalnızca özellikleri de paketinize aittir.
Satıcı tarafı JavaScript'ini geçersiz kıl
Satıcı tarafı JavaScript'inin geçersiz kılmasını ayarlamak için aşağıda gösterildiği gibi şunları yapın: şu kod örneğinde:
- Bir
AdSelectionManager
nesnesini başlatın. - Şu kaynaktan
TestAdSelectionManager
için referans alın:AdSelectionManager
nesne. AdSelectionConfig
nesnesi oluşturun.- Aşağıdaki gibi bir
AddAdSelectionOverrideRequest
oluştur:AdSelectionConfig
nesnesi ve JavaScript'i temsil eden birString
kullanmayı planladığınızı varsayalım. - Eşzamansız
overrideAdSelectionConfigRemoteInfo()
yönteminiAddAdSelectionOverrideRequest
nesnesi ve alakalıExecutor
veOutcomeReceiver
nesneleri anlamına gelir.
Kotlin
val testAdSelectionManager: TestAdSelectionManager =
context.getSystemService(AdSelectionManager::class.java).getTestAdSelectionManager()
// Initialize AdSelectionConfig =
val adSelectionConfig = new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.build()
// Initialize AddAddSelectionOverrideRequest
val request = AddAdSelectionOverrideRequest.Builder()
.setAdSelectionConfig(adSelectionConfig)
.setDecisionLogicJs(decisionLogicJS)
.build()
// Run the call to override the JavaScript for the given AdSelectionConfig
// Note that this only takes effect in apps marked as debuggable
testAdSelectionManager.overrideAdSelectionConfigRemoteInfo(
request,
executor,
outComeReceiver)
Java
TestAdSelectionManager testAdSelectionManager =
context.getSystemService(AdSelectionManager.class).getTestAdSelectionManager();
// Initialize AdSelectionConfig =
AdSelectionConfig adSelectionConfig = new AdSelectionConfig.Builder()
.setSeller(seller)
.setDecisionLogicUrl(decisionLogicUrl)
.setCustomAudienceBuyers(customAudienceBuyers)
.setAdSelectionSignals(adSelectionSignals)
.setSellerSignals(sellerSignals)
.setPerBuyerSignals(perBuyerSignals)
.build();
// Initialize AddAddSelectionOverrideRequest
AddAdSelectionOverrideRequest request = AddAdSelectionOverrideRequest.Builder()
.setAdSelectionConfig(adSelectionConfig)
.setDecisionLogicJs(decisionLogicJS)
.build();
// Run the call to override the JavaScript for the given AdSelectionConfig
// Note that this only takes effect in apps marked as debuggable
testAdSelectionManager.overrideAdSelectionConfigRemoteInfo(
request,
executor,
outComeReceiver);
Reklamın her birinin ne anlama geldiği hakkında daha fazla bilgi edinmek için Reklam seçimini yayınlama bölümüne bakın.
AdSelectionConfig
içindeki alanlar gösterilir. Aralarındaki temel fark
decisionLogicUrl öğesinin daha önce gösterildiği gibi bir yer tutucu değere
yoksayıldı.
Reklam seçimi sırasında kullanılan JavaScript'i geçersiz kılmak için
decisionLogicJs
, uygun satıcı tarafı işlev imzalarını içermelidir.
Bir JavaScript dosyasının dize olarak nasıl okunacağına ilişkin bir örnek için lütfen
GitHub'da Protected Audience API örnek uygulamasını inceleyin.
Eşzamansız overrideAdSelectionConfigRemoteInfo()
yöntemi,
API çağrısının sonucunu işaret edecek OutcomeReceiver
nesnesi.
onResult()
geri çağırması, geçersiz kılmanın başarıyla uygulandığını belirtir.
Gelecekteki selectAds()
çağrılarında her türlü karar ve raporlama kullanılacaktır
mantığını temel alır.
onError()
geri çağırması iki olası koşulu ifade eder:
- Geçersiz bağımsız değişkenlerle geçersiz kılma girişiminde bulunursa
AdServiceException
, birIllegalArgumentException
öğesinin pek çok yolu vardır. - Hata ayıklama modunda çalışmayan bir uygulamayla geçersiz kılma girişiminde bulunulduysa
geliştirici seçenekleri etkinse
AdServiceException
IllegalStateException
nedeni gösterilir.
Satıcı tarafı geçersiz kılmalarını sıfırla
Bu bölümde satıcı tarafı JavaScript'ini geçersiz kıldığınız ve bu JavaScript'in
TestAdSelectionManager
ve
Önceki bölümde AdSelectionConfig
kullanıldı.
Tüm AdSelectionConfigs
için geçersiz kılmaları sıfırlamak üzere:
- Eşzamansız
resetAllAdSelectionConfigRemoteOverrides()
yöntemini çağırın alakalıOutcomeReceiver
nesnesiyle değiştirin.
Kotlin
// Resets overrides for all AdSelectionConfigs
testAadSelectionManager.resetAllAdSelectionConfigRemoteOverrides(
outComeReceiver)
Java
// Resets overrides for all AdSelectionConfigs
testAdSelectionManager.resetAllAdSelectionConfigRemoteOverrides(
outComeReceiver);
Satıcı tarafı geçersiz kılmalarını sıfırladıktan sonra, selectAds()
çağrılarına
decisionLogicUrl, şunları denemek için AdSelectionConfig
içinde depolanır:
gerekli JavaScript'i getirin.
resetAllAdSelectionConfigRemoteOverrides()
çağrısı başarısız olursa
OutComeReceiver.onError()
geri çağırması, bir AdServiceException
sağlar.
Hata ayıklama modunda çalışmayan bir uygulamada geçersiz kılmalar kaldırılmaya çalışılırsa
geliştirici seçenekleri etkin olduğunda, AdServiceException
IllegalStateException
nedeni gösterilir.
Alıcı tarafı JavaScript'i geçersiz kıl
- Özel kitleye katılma adımlarını uygulayın
- Alıcıyla bir
AddCustomAudienceOverrideRequest
oluşturun ve geçersiz kılmak istediğiniz özel kitlenin adı ve geçersiz kılma olarak kullanmak istediğiniz teklif mantığı ve veriler - Eşzamansız
overrideCustomAudienceRemoteInfo()
yönteminiAddCustomAudienceOverrideRequest
nesnesi ve alakalıExecutor
veOutcomeReceiver
nesneleri
Kotlin
val testCustomAudienceManager: TestCustomAudienceManager =
context.getSystemService(CustomAudienceManager::class.java).getTestCustomAudienceManager()
// Join custom audience
// Build the AddCustomAudienceOverrideRequest
val request = AddCustomAudienceOverrideRequest.Builder()
.setBuyer(buyer)
.setName(name)
.setBiddingLogicJs(biddingLogicJS)
.setTrustedBiddingSignals(trustedBiddingSignals)
.build()
// Run the call to override JavaScript for the given custom audience
testCustomAudienceManager.overrideCustomAudienceRemoteInfo(
request,
executor,
outComeReceiver)
Java
TestCustomAudienceManager testCustomAudienceManager =
context.getSystemService(CustomAudienceManager.class).getTestCustomAudienceManager();
// Join custom audience
// Build the AddCustomAudienceOverrideRequest
AddCustomAudienceOverrideRequest request =
AddCustomAudienceOverrideRequest.Builder()
.setBuyer(buyer)
.setName(name)
.setBiddingLogicJs(biddingLogicJS)
.setTrustedBiddingSignals(trustedBiddingSignals)
.build();
// Run the call to override JavaScript for the given custom audience
testCustomAudienceManager.overrideCustomAudienceRemoteInfo(
request,
executor,
outComeReceiver);
buyer ve name değerleri, özel kitle. Bu alanlar hakkında daha fazla bilgi edinin.
Buna ek olarak, iki ek parametre belirtebilirsiniz:
biddingLogicJs
: Alıcının mantığını barındıran JavaScript dikkat edin. Gerekli işlev imzalarını JavaScript'e dokunun.trustedBiddingSignals
: Reklam seçimi sırasında kullanılacak teklif sinyalleri. Test amacıyla bu boş bir dize olabilir.
Eşzamansız overrideCustomAudienceRemoteInfo()
yöntemi,
OutcomeReceiver
nesnesini ifade eder.
onResult()
geri çağırması, geçersiz kılmanın başarıyla uygulandığını belirtir.
selectAds()
için yapılan sonraki çağrılar, ilgili teklif verme ve raporlama mantığını kullanır.
geçersiz kılmayı kabul edersiniz.
onError()
geri çağırması iki olası koşulu belirtir.
- Geçersiz bağımsız değişkenlerle geçersiz kılma girişiminde bulunursa
AdServiceException
, birIllegalArgumentException
öğesinin pek çok yolu vardır. - Hata ayıklama modunda çalışmayan bir uygulamayla geçersiz kılma girişiminde bulunulduysa
geliştirici seçenekleri etkinse
AdServiceException
IllegalStateException
nedeni gösterilir.
Alıcı tarafı geçersiz kılmalarını sıfırla
Bu bölümde, alıcı tarafı JavaScript'ini geçersiz kıldığınız ve bu JavaScript'in
TestCustomAudienceManager
önceki bölüm.
Tüm özel kitleler için geçersiz kılmaları sıfırlamak üzere:
- Eşzamansız
resetAllCustomAudienceOverrides()
yöntemini şununla birlikte çağırın: alakalıExecutor
veOutcomeReceiver
nesneleri.
Kotlin
// Resets overrides for all custom audiences
testCustomAudienceManager.resetCustomAudienceRemoteInfoOverride(
executor,
outComeReceiver)
Java
// Resets overrides for all custom audiences
testCustomAudienceManager.resetCustomAudienceRemoteInfoOverride(
executor,
outComeReceiver)
Alıcı tarafı geçersiz kılmaları sıfırladıktan sonra selectAds()
için yapılan sonraki çağrılar
biddingLogicUrl
ve trustedBiddingData
için hangisi doğru ise
taşımak için CustomAudience
içinde depolanmaktadır.
JavaScript'e dokunun.
resetCustomAudienceRemoteInfoOverride()
çağrısı başarısız olursa
OutComeReceiver.onError()
geri çağırması, bir AdServiceException
sağlar.
Hata ayıklama modunda çalışmayan bir uygulamada geçersiz kılmalar kaldırılmaya çalışılırsa
geliştirici seçenekleri etkinken AdServiceException
IllegalStateException
nedeni gösterilir.
Raporlama Sunucusu Kurma
Uzaktan getirme geçersiz kılmaları kullanırken yine de bir sunucu ayarlamanız gerekir. cihazınızın veya emülatörünüzün raporlama etkinliklerine yanıt vermek için ulaşabileceği bir web sitesidir. Basit bir 200 değerini döndüren uç nokta test için yeterlidir. GitHub deposunda Desteklenen bir modele dağıtılabilen OpenAPI hizmet tanımları veya mikro hizmetler platformu. Daha fazla bilgi için projeye bakın BENİOKU.
OpenAPI tanımlarını ararken Reporting-server.json dosyasını arayın.
Bu dosya 200 döndüren ve HTTP'yi temsil eden basit bir uç nokta içeriyor.
yanıt kodu. Bu uç nokta, selectAds()
sırasında kullanılır ve
gösterim raporlamanın başarıyla tamamlandığı Protected Audience API.
Test edilecek işlevsellik
- Katılma veya ayrılma alıştırması yapın ve öncekileri temel alarak özel kitle oluşturun. kullanıcı işlemleri.
- Barındırılan JavaScript'ler aracılığıyla cihaz üzerinde reklam seçiminin başlatılmasına yönelik çalışma bazı ipuçları vereceğim.
- Bir uygulamanın özel kitle ayarlarıyla ilişkilendirmesinin reklamları nasıl etkileyebileceğini gözlemleme seçim sonuçları.
- Reklam seçiminden sonra gösterim raporlama uygulayın.
Sınırlamalar
Aşağıdaki tabloda, Protected Audience API işlemeyle ilgili sınırlamalar listelenmiştir. Sunulan sınırlar geri bildirime göre değiştirilebilir. Örneğin, sürüm notlarını okuyun.
Bileşen | Sınır Açıklaması | Değeri Sınırla |
---|---|---|
Özel kitle (CA) | Sertifika yetkilisi başına maksimum reklam sayısı | 100 |
Uygulama başına maksimum CA sayısı | 1000 | |
Sertifika yetkilisi oluşturabilecek maksimum uygulama sayısı | 1000 | |
Sertifika yetkilisinin oluşturulma zamanından itibaren etkinleştirme süresinde maksimum gecikme | 60 gün | |
CA'nın etkinleştirme zamanından itibaren maksimum geçerlilik süresi | 60 gün | |
Cihazdaki maksimum CA sayısı | 4000 | |
Maksimum CA adı boyutu | 200 bayt | |
Maksimum günlük getirme URI boyutu | 400 bayt | |
Maksimum teklif mantığı URI'si boyutu | 400 bayt | |
Güvenilir teklif verilerinin maksimum boyutu | 10 KB | |
Kullanıcı teklif sinyallerinin maksimum boyutu | 10 KB | |
Alıcı başına leaveCustomAudience için maksimum arama oranı |
Saniyede 1 | |
Alıcı başına joinCustomAudience için maksimum arama oranı |
Saniyede 1 | |
CA Arka Planda Getirme | Bağlantı zaman aşımı | 5 saniye |
HTTP okuma zaman aşımı | 30 saniye | |
Maksimum toplam indirme boyutu | 10 KB | |
Getirme yinelemesinin maksimum süresi | 5 dakika | |
İş başına güncellenen maksimum CA sayısı | 1000 | |
Reklam Seçimi | Maksimum alıcı sayısı | Henüz belli değil |
Alıcı başına maksimum CA sayısı | Henüz belli değil | |
Bir açık artırmadaki maksimum reklam sayısı | Henüz belli değil | |
İlk bağlantı zaman aşımı | 5 saniye | |
Bağlantı okuma zaman aşımı | 5 saniye | |
Genel AdSelection için maksimum yürütme süresi |
10 saniye | |
AdSelection bölgesinde sertifika yetkilisi başına maksimum teklif yürütme süresi |
5 saniye | |
AdSelection puanlamada maksimum yürütme süresi |
5 saniye | |
AdSelection cinsinden alıcı başına maksimum yürütme süresi |
Henüz belli değil | |
Maksimum reklam seçimi/satıcı/alıcı sinyalleri başına maksimum boyut | Henüz belli değil | |
Satıcı/alıcı komut dosyalarının maksimum boyutu | Henüz belli değil | |
selectAds için maksimum arama oranı |
1 QPS | |
Gösterim raporlama | Reklam seçiminin kalıcılıktan kaldırılması için gereken minimum süre | 24 sa. |
Maksimum depolama alanı reklam seçimi sayısı | Henüz belli değil | |
Raporlama çıkış URL'sinin maksimum boyutu | Henüz belli değil | |
Gösterim raporlama için maksimum süre | Henüz belli değil | |
Bildirim çağrıları için maksimum yeniden deneme sayısı | Henüz belli değil | |
Bağlantı zaman aşımı | 5 saniye | |
reportImpression için maksimum genel yürütme süresi |
2 saniye | |
reportImpressions için maksimum arama oranı |
1 QPS | |
Etkinlik raporlaması | Açık artırma başına alıcı başına maksimum işaretçi sayısı | 10 |
Açık artırma başına satıcı başına maksimum işaretçi sayısı |
10 |
|
Maksimum etkinlik anahtarı boyutu |
40 bayt |
|
Maksimum etkinlik verisi boyutu |
64KB |
|
Reklamlar | Reklam listesinin maksimum boyutu | Herkes tarafından paylaşılan 10 KB
AdData .
tek bir CA ile bağlama |
URL'ler | Giriş olarak alınan herhangi bir URL dizesinin maksimum uzunluğu | Henüz belli değil |
JavaScript | Maksimum yürütme süresi | Gösterim raporlaması için teklif verme ve puanlama için 1 saniye |
Kullanılan maksimum bellek | 10 MB |
Hataları ve sorunları bildirin
Geri bildirimleriniz, Android'deki Özel Korumalı Alan'ın çok önemli bir parçasıdır. Bizimle paylaşın sorunlar veya Android'de Özel Korumalı Alan'ı iyileştirme konusunda fikirleriniz.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Protected Audience API ile özel kitle hedeflemeyi destekleme
- Sürüm notları
- Protected Audience: entegrasyon kılavuzu