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.
. Topics API, verileri temel alarak cihaz üzerindeki genel ilgi sinyallerine kullanıcının uygulama kullanımı. Konular adı verilen bu sinyaller, reklamverenlerle paylaşılır. Google Analytics 2015'te, Google Haritalar ve Google Arama Ağı'nda Tasarım teklifinde Topics API hakkında daha fazla bilgi edinin. Önemli: SDK Uzantıları Sürümü veya Geliştirici Önizlemesi düğmesini seçerek şu işlemleri yapabilirsiniz: Talimatlar değişiklik gösterebileceğinden, çalıştığınız program sürümünü seçin.
Kurulum
En güncel özelliklerden yararlanmak için Android Özel Korumalı Alan SDK'sının son sürümünü kullanın sürümlerinden biridir. Bir izin eklemeniz gerekiyor Topics API:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" />
Reklamınızın <application>
öğesinde bir Reklam Hizmetleri yapılandırmasına başvurun
manifesto:
<property android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
Manifest'te başvurulan Reklam Hizmetleri XML kaynağını belirtin. Örneğin:
res/xml/ad_services_config.xml
Şunlar için allowAllToAccess
özelliğini kullanın:
tüm SDK'lara erişim izni ver veya erişim izni vermek için allowSdksToAccess
özelliğine
ayrı ayrı düzenleyebilir. Reklam Hizmetleri izinleri ve SDK erişimi hakkında daha fazla bilgi
kontrol edin.
<ad-services-config>
<topics allowAllToAccess="true" />
</ad-services-config>
Ayrıca, Topics API'ye erişimi etkinleştirmeniz gerekir (Google varsayılan) birlikte kullanmanız gerekir.
adb shell device_config put adservices ppapi_app_signature_allow_list \"\*\"
adb shell setprop debug.adservices.disable_topics_enrollment_check true
Topics API'nin temel işlevi,
getTopics()
yöntemini kullanarak TopicsManager
nesnesinin içinde gösterildiği gibi
örnek:
Kotlin
fun getTopics(
getTopicsRequest: GetTopicsRequest,
executor: Executor,
callback: OutcomeReceiver<GetTopicsResponse, Exception>
) { }
Java
public void getTopics (@NonNull GetTopicsRequest getTopicsRequest,
@NonNull Executor executor,
@NonNull OutcomeReceiver<GetTopicsResponse, Exception> callback)
Bu yöntemi kullanmak için TopicsManager
nesnesini ve parametreleri başlatın.
gereken tüm bilgileri içerir. GetTopicsRequest
için gerekli bilgiler kartı
Topics API verilerini almak için kullanılır. Bu veriler, çağrı yapanın
gözlemci olarak hareket edip etmeyeceğinizi belirtelim. Gözlemci olmadığında
getTopics
çağrısı, önceki dönemden bir konuyu döndürüyor, ancak bunu yapmıyor
konu verilerini etkileyebilir. OutcomeReceiver
geri çağırması
sonucu eşzamansız olarak işler. Örneğin:
Kotlin
private fun topicGetter() {
val mContext = baseContext
val mTopicsManager = mContext.getSystemService(TopicsManager::class.java)
val mExecutor: Executor = Executors.newCachedThreadPool()
val shouldRecordObservation = false
val mTopicsRequestBuilder: GetTopicsRequest.Builder = GetTopicsRequest.Builder()
mTopicsRequestBuilder.setAdsSdkName(baseContext.packageName)
mTopicsRequestBuilder.setShouldRecordObservation(shouldRecordObservation)
mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor,
mCallback as OutcomeReceiver<GetTopicsResponse, Exception>)
}
private var mCallback: OutcomeReceiver<GetTopicsResponse, java.lang.Exception> =
object : OutcomeReceiver<GetTopicsResponse, java.lang.Exception> {
override fun onResult(result: GetTopicsResponse) {
// handle successful result
val topicsResult = result.topics
for (i in topicsResult.indices) {
Log.i("Topic", topicsResult[i].getTopicId().toString())
}
if (topicsResult.size == 0) {
Log.i("Topic", "Returned Empty")
}
}
override fun onError(error: java.lang.Exception) {
// handle error
Log.i("Topic", "Error, did not return successfully")
}
}
Java
public void TopicGetter() {
@NonNull Context mContext = getBaseContext();
TopicsManager mTopicsManager = mContext.getSystemService(TopicsManager.class);
Executor mExecutor = Executors.newCachedThreadPool();
boolean shouldRecordObservation = false;
GetTopicsRequest.Builder mTopicsRequestBuilder = new GetTopicsRequest.Builder();
mTopicsRequestBuilder.setAdsSdkName(getBaseContext().getPackageName());
mTopicsRequestBuilder.setShouldRecordObservation(shouldRecordObservation);
mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor, mCallback);
}
OutcomeReceiver mCallback = new OutcomeReceiver<GetTopicsResponse, Exception>() {
@Override
public void onResult(@NonNull GetTopicsResponse result) {
//Handle Successful Result
List<Topic> topicsResult = result.getTopics();
for (int i = 0; i < topicsResult.size(); i++) {
Log.i("Topic", topicsResult.get(i).getTopicId().toString());
}
if (topicsResult.size() == 0) {
Log.i("Topic", "Returned Empty");
}
}
@Override
public void onError(@NonNull Exception error) {
// Handle error
Log.i("Topic", "Experienced an error, and did not return successfully");
}
};
Konu kümesi isteme
Kurulumunuz hazır olduğunda GetTopicsResponse
almak için telefon edebilirsiniz.
Bunun sonucunda, getTopics()
yönteminden elde edilen gelir:
Kotlin
mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor,
mCallback as OutcomeReceiver<GetTopicsResponse, java.lang.Exception>)
Java
mTopicsManager.getTopics(mTopicsRequestBuilder.build(), mExecutor, mCallback);
Yukarıdaki çağrı, kimlik değerleri içeren Topics nesnelerinin listesini sağlar açık kaynak sınıflandırmasında şu konuyla ilgili konulara karşılık gelen: veya alakalı bir hata olabilir. Konular aşağıdaki örneğe benzer:
/Internet & Telecom/Text & Instant Messaging
Yapılabilecek olası konuların listesi için sınıflandırmaya geri döndü. Bu sınıflandırma açık kaynaktır ve önerilen değişiklikler geri bildirim düğmesini tıklayın.
Test
Topics API, uygulama kullanımına dayalı olarak alakalı ve yeni konular sunar. Bu erken dönem
sürümü, API davranışlarının bir önizlemesini sunar ve biz de arama sonuçlarının kalitesini
daha fazla bilgi edineceksiniz.
En iyi deneyimi yaşamak için, test ortamında birden fazla
konuların nasıl seçildiğini görmek için getTopics()
adlı uygulamayı çağırın. SDK
GitHub'da Çalışma Zamanı ve Gizliliği Koruyan API'ler Deposu,
başlamanıza yardımcı olacak ayrı ayrı Android Studio projeleri
Topics API'nin nasıl başlatılacağını ve çağrılacağını gösteren bir kılavuz bulunmaktadır.
Konu hesaplaması, bir "dönem"in sonunda yapılır. Varsayılan olarak dönem 7 gün sürer ancak sonuç almak için bu aralığı değiştirebilirsiniz. Bu Android Debug Bridge kabuk komutu, dönem uzunluğunu 5 dakikaya indirir:
adb shell device_config put adservices topics_epoch_job_period_ms 300000
topics_epoch_job_period_ms
değerini get
ile doğrulayabilirsiniz:
adb shell device_config get adservices topics_epoch_job_period_ms
Dönem hesaplamasını manuel olarak tetiklemek için aşağıdaki komutu yürütün:
adb shell cmd jobscheduler run -f com.google.android.adservices.api 2
Örnek uygulamayı kullanmanın yanı sıra kullanabileceğiniz bir colab
farklı uygulama bilgisi kombinasyonlarını konulara göre test etmek için kullanabilirsiniz
sınıflandırıcıyı kullanın. Uygulamanızın olası sonuç türlerini görüntülemek için bu ortak çalışmayı kullanın
getTopics
aranıyor.
Sınırlamalar
Topics API ile ilgili devam eden özelliklerin listesi için şu sayfaya bakın: sürüm notları gibidir.
Hataları ve sorunları bildirme
Geri bildirimleriniz, Android'deki Özel Korumalı Alan'ın çok önemli bir parçasıdır. Lütfen bizimle paylaşın veya Android'de Özel Korumalı Alan'ı iyileştirme konusunda fikirleriniz olabilir.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Android geliştirici kılavuzunda Protected Audience API
- Sürüm notları
- AdServices'i yapılandırma {:#configure-adservices}