Topics API geliştirici kılavuzu

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.


Geri bildirim gönderin

. 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.