AdSelectionManager

public class AdSelectionManager
extends Object

java.lang.Object
→ Yönergeler android.adservices.adselection.AdSelectionManager


AdSelection Manager, reklam seçimi işlemlerini çalıştırmanın yanı sıra gösterimleri raporlamak üzere uygulama ve reklam SDK'ları için API'ler sağlar.

Özet

Herkese açık yöntemler

static AdSelectionManager get(Context context)

AdSelectionManager örneğinin oluşturulması için fabrika yöntemi.

void getAdSelectionData(GetAdSelectionDataRequest request, Executor executor, OutcomeReceiver<GetAdSelectionDataOutcomeException> receiver)

Cihazdan özel kitle verileri toplar.

TestAdSelectionManager getTestAdSelectionManager()
void persistAdSelectionResult(PersistAdSelectionResultRequest request, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Sunucu tarafından yapılan reklam seçimi sonuçlarının kalıcı olmasını sağlar.

void reportEvent(ReportEventRequest request, Executor executor, OutcomeReceiver<ObjectException> receiver)

adSelectionId tarafından tanımlanan reklam seçimi tarafından seçilen reklam için raporlanacak yeni bir reklam etkinliği olduğunu hizmete bildirir.

void reportImpression(ReportImpressionRequest request, Executor executor, OutcomeReceiver<ObjectException> receiver)

adSelectionId tarafından tanımlanan reklam seçimi tarafından seçilen reklam için raporlanacak yeni bir gösterim olduğunu hizmete bildirir.

void selectAds(AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Daha önce çalıştırılan reklam seçimlerinin sonuçlarından bir reklam seçer.

void selectAds(AdSelectionConfig adSelectionConfig, Executor executor, OutcomeReceiver<AdSelectionOutcomeException> receiver)

Arayan uygulama için bir yeniden pazarlama reklamı seçmek üzere cihazda reklam seçme işlemini yürütür.

void updateAdCounterHistogram(UpdateAdCounterHistogramRequest updateAdCounterHistogramRequest, Executor executor, OutcomeReceiver<ObjectException> outcomeReceiver)

Daha önce selectAds(android.adservices.adselection.AdSelectionConfig, java.util.concurrent.Executor, android.os.OutcomeReceiver) çağrısıyla seçilen bir reklamın sayaç histogramlarını günceller.

Devralınan yöntemler

Herkese açık yöntemler

get

API düzeyi 34'e eklendi
Ayrıca Reklam Hizmetleri Uzantıları 6'ya da eklendi
public static AdSelectionManager get (Context context)

AdSelectionManager örneğinin oluşturulması için fabrika yöntemi.

Parametreler
context Context: Kullanılacak Context değeri, null olamaz.

İlerlemeler
AdSelectionManager AdSelectionManager örneği Bu değer null olamaz.

AdSelectionData'yı alma

public void getAdSelectionData (GetAdSelectionDataRequest request, 
                Executor executor, 
                OutcomeReceiver<GetAdSelectionDataOutcomeException> receiver)

Cihazdan özel kitle verileri toplar. Reklam seçimi için açık artırma sunucularına gönderilecek sıkıştırılmış ve şifrelenmiş bir blob döndürür. Daha fazla bilgi için Teklif Verme ve Açık Artırma Hizmetlerini Açıklayıcı sayfasını ziyaret edin.

Özel kitle reklamlarının toplanmaya uygun olması için bir ad_render_id içermesi gerekir.

Bu API tarafından oluşturulan blob ile sunucu tarafında çalıştırılan reklam seçimi sonuçlarının nasıl işleneceğini öğrenmek için AdSelectionManager#persistAdSelectionResult adresine bakın.

Çıkış, alıcı tarafından iletilir. Alıcı, başarılı bir çalıştırma için GetAdSelectionDataOutcome döndürür veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

IllegalArgumentException hatalıysa API'nin reklam seçimini çalıştırmak için aldığı geçersiz giriş bağımsız değişkeninden kaynaklanır.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

TimeoutException devre dışı bırakılırsa kazanan Reklamı bulmak için teklif verme, puanlama veya genel seçim işlemi sırasında zaman aşımı yaşanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
request GetAdSelectionDataRequest: Bu değer null olamaz.

executor Executor: Bu değer null olamaz. Geri çağırma ve işleyici etkinlikleri, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz. Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın.

receiver OutcomeReceiver: Bu değer null olamaz.

getTestAdSelectionManager

API düzeyi 34'e eklendi
Ayrıca Reklam Hizmetleri Uzantıları 4'e de eklendi
public TestAdSelectionManager getTestAdSelectionManager ()

İlerlemeler
TestAdSelectionManager Bu değer null olamaz.

kalıcıAdSelectionResult

public void persistAdSelectionResult (PersistAdSelectionResultRequest request, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Sunucu tarafından yapılan reklam seçimi sonuçlarının kalıcı olmasını sağlar. Daha fazla bilgi için Teklif ve Açık Artırma Hizmetlerini Açıklama başlıklı makaleyi inceleyin.

Sunucu tarafında bir reklam seçimi çalıştırmak için şifrelenmiş blob oluşturma hakkında bilgi edinmek için AdSelectionManager#getAdSelectionData bölümüne bakın.

Çıkış, alıcı tarafından iletilir. Alıcı, başarılı bir çalıştırma için AdSelectionOutcome döndürür veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

IllegalArgumentException hatalıysa API'nin reklam seçimini çalıştırmak için aldığı geçersiz giriş bağımsız değişkeninden kaynaklanır.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

TimeoutException devre dışı bırakılırsa kazanan Reklamı bulmak için teklif verme, puanlama veya genel seçim işlemi sırasında zaman aşımı yaşanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
request PersistAdSelectionResultRequest: Bu değer null olamaz.

executor Executor: Bu değer null olamaz. Geri çağırma ve işleyici etkinlikleri, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz. Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın.

receiver OutcomeReceiver: Bu değer null olamaz.

raporEtkinlik

public void reportEvent (ReportEventRequest request, 
                Executor executor, 
                OutcomeReceiver<ObjectException> receiver)

adSelectionId tarafından tanımlanan reklam seçimi tarafından seçilen reklam için raporlanacak yeni bir reklam etkinliği olduğunu hizmete bildirir. Reklam etkinliği, belirtilen adSelectionId ile ilişkili bir reklamın başına gelen her türlü olaydır. Reklam etkinliğinin ne zaman raporlanacağına dair herhangi bir garanti verilmez. Etkinlik raporlamasında gecikme yaşanabilir ve raporlar toplu olarak işlenebilir.

Hizmet, ReportEventRequest#getKey() kullanıldığında registerAdBeacon içinde kayıtlı reportingUri bilgisini getirir. registerAdBeacon hakkında daha fazla bilgi için reportImpression(ReportImpressionRequest, Executor, OutcomeReceiver) dokümanlarına bakın. Ardından hizmet, POST isteğinin istek gövdesine ReportEventRequest#getData() ekleyerek isteği gönderir. POST isteğinin gövdesinde text/plain content-type öğesi bulunur ve veriler charset=UTF-8 içinde aktarılır.

Çıkış, alıcı tarafından iletilir. Alıcı, başarılı bir çalıştırma için boş bir Object döndürür veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

IllegalArgumentException hatalıysa API'nin reklam etkinliğini bildirmek için aldığı geçersiz giriş bağımsız değişkeninden kaynaklanır.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.

Etkinlikler, en iyi çaba girişimi olarak en fazla bir kez raporlanır.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
request ReportEventRequest: Bu değer null olamaz.

executor Executor: Bu değer null olamaz.

receiver OutcomeReceiver: Bu değer null olamaz.

raporGösterimi

API düzeyi 34'e eklendi
Ayrıca Reklam Hizmetleri Uzantıları 4'e de eklendi
public void reportImpression (ReportImpressionRequest request, 
                Executor executor, 
                OutcomeReceiver<ObjectException> receiver)

adSelectionId tarafından tanımlanan reklam seçimi tarafından seçilen reklam için raporlanacak yeni bir gösterim olduğunu hizmete bildirir. Gösterimin ne zaman raporlanacağına dair bir garanti yoktur. Gösterim raporlaması gecikebilir ve raporlar toplu olarak işlenebilir.

Hizmet, kazanan satıcı raporlama URL'sini hesaplamak için satıcının JavaScript mantığını ReportImpressionRequest.getAdSelectionConfig() adresinde bulunan AdSelectionConfig#getDecisionLogicUri() parametresinden alır. Ardından hizmet, satıcı JS'sinde bulunan reportResult adlı işlevlerden birini yürüterek cihaz üzerinde sinyaller ve ReportImpressionRequest#getAdSelectionConfig() ile giriş parametreleri sağlar.

reportResult işlevinin işlev tanımı şu şekildedir:

function reportResult(ad_selection_config, render_url, bid, contextual_signals) { return { 'status': status, 'results': {'signals_for_buyer': signals_for_buyer, 'reporting_url': reporting_url } }; }

Hizmet, kazanan alıcı raporlama URL'sini hesaplamak için kazanan alıcının CustomAudience.getBiddingLogicUri() JavaScript mantığını getirir. Ardından hizmet, alıcı JS'sinde bulunan reportWin adlı işlevlerden birini yürütür. Bu işlev, giriş parametreleri olarak cihaz üzerinde sinyaller, reportResult ile hesaplanan signals_for_buyer ve ReportImpressionRequest#getAdSelectionConfig() öğesindeki belirli alanları sağlar.

reportWin işlevinin işlev tanımı şu şekildedir:

function reportWin(ad_selection_signals, per_buyer_signals, signals_for_buyer, contextual_signals, custom_audience_reporting_signals) { return {'status': 0, 'results': {'reporting_url': reporting_url } }; }

Ayrıca, alıcılar ve satıcılar belirli reklam etkinlikleriyle ilgili rapor almak için kaydolabilir. Bunu yapmak amacıyla alıcılar ve satıcılar için sırasıyla reportWin ve reportResult içinde platform tarafından sağlanan registerAdBeacon işlevini çağırabilirler.

registerBeacon işlevinin işlev tanımı şu şekildedir:

function registerAdBeacon(beacons) (burada beacons, dize çiftlerine yönelik dizenin bir diktesidir)

Bir alıcının/satıcının raporlarıyla ilgilendiği her reklam etkinliği için beacons bölümüne bir event_key: event_reporting_uri çifti ekler. Burada event_key, söz konusu etkinliğin tanımlayıcısıdır. SDK, reportEvent(ReportEventRequest, Executor, OutcomeReceiver) yöntemini çağırdığında bu event_key, ReportEventRequest#getKey() ile eşleşmelidir. Ayrıca, her event_reporting_uri düzgün bir şekilde Uri olarak ayrıştırılmalıdır. Bu, SDK reportEvent(ReportEventRequest, Executor, OutcomeReceiver) yöntemini çağırdığında bildirilen Uri olacaktır.

Alıcı/satıcı, etkinlik almak istediği tüm eşlemeleri eklediğinde registerAdBeacon(beacons) yöntemini çağırabilir. Burada beacons, çiftleri eklediği komutun adıdır.

registerAdBeacon şu durumlarda TypeError atar:

  1. registerAdBeacon birden fazla kez çağrılıyor. reportWin/reportResult içinde bu hata yakalanırsa orijinal eşleme grubu kaydedilir.
  2. registerAdBeacon, tam olarak 1 dikte bağımsız değişkenine sahip değil.
  3. 1 dikt bağımsız değişkeninin içeriği tüm String: String eşlemelerine ait değil.

Çıkış, başarılı bir çalıştırma için boş bir Object döndüren receiver tarafından iletilir veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

IllegalArgumentException hatasının nedeni, API'nin gösterimi bildirmek için aldığı geçersiz giriş bağımsız değişkenidir.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.

Gösterimler, en iyi çaba girişimi olarak en fazla bir kez raporlanır.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
request ReportImpressionRequest: Bu değer null olamaz.

executor Executor: Bu değer null olamaz.

receiver OutcomeReceiver: Bu değer null olamaz.

Ads'i seçin

public void selectAds (AdSelectionFromOutcomesConfig adSelectionFromOutcomesConfig, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Daha önce çalıştırılan reklam seçimlerinin sonuçlarından bir reklam seçer.

Giriş (adSelectionFromOutcomesConfig) Ads SDK'sı tarafından sağlanır ve AdSelectionFromOutcomesConfig nesnesi bir Bağlayıcı çağrısı aracılığıyla aktarılır. Bu nedenle, bu nesnelerin toplam boyutu Android IPC sınırlamalarına bağlıdır. AdSelectionFromOutcomesConfig aktarılamadıysa TransactionTooLargeException atılır.

Çıkış, alıcı tarafından iletilir. Alıcı, başarılı bir çalıştırma için AdSelectionOutcome döndürür veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

adSelectionFromOutcomesConfig girdisi şunları içerir:

  • Seller kayıtlı bir AdTechIdentifier olmalıdır. Aksi takdirde IllegalStateException atılır.
  • List of ad selection ids mevcut olmalı ve aynı uygulamadan yapılan selectAds(AdSelectionConfig, Executor, OutcomeReceiver) çağrıdan gelmelidir. Aksi takdirde, giriş doğrulaması için IllegalArgumentException, listelemeyi ihlal eden reklam seçimi kimliklerini artırır.
  • HTTPS veya Reklam Seçimi Önceden oluşturulmuş şemalarını izleyebilen Selection logic URI.

    URI, HTTPS şemasını izliyorsa ana makine seller ile eşleşmelidir. Aksi takdirde IllegalArgumentException atılır.

    Önceden oluşturulmuş URI'lar, selectOutcome için gerekli JavaScript'ler yerine önceden oluşturulmuş genel bir mantığın yerine koyma yöntemidir. Bu uç nokta için önceden oluşturulmuş URI şu şekilde görünmelidir:

    • ad-selection-prebuilt://ad-selection-from-outcomes/<name>?<script-generation-parameters>

    Desteklenmeyen bir önceden oluşturulmuş URI iletilirse veya önceden oluşturulmuş URI özelliği hizmet tarafından devre dışı bırakılırsa IllegalArgumentException hatası verilir.

    Desteklenen <name> ve gerekli <script-generation-parameters> için AdSelectionFromOutcomesConfig.Builder#setSelectionLogicUri adresine bakın.

IllegalArgumentException hatalıysa API'nin reklam seçimini çalıştırmak için aldığı geçersiz giriş bağımsız değişkeninden kaynaklanır.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

TimeoutException devre dışı bırakılırsa kazanan Reklamı bulmak için teklif verme, puanlama veya genel seçim işlemi sırasında zaman aşımı yaşanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
adSelectionFromOutcomesConfig AdSelectionFromOutcomesConfig: Bu değer null olamaz.

executor Executor: Bu değer null olamaz. Geri çağırma ve işleyici etkinlikleri, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz. Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın.

receiver OutcomeReceiver: Bu değer null olamaz.

Ads'i seçin

API düzeyi 34'te eklendi
public void selectAds (AdSelectionConfig adSelectionConfig, 
                Executor executor, 
                OutcomeReceiver<AdSelectionOutcomeException> receiver)

Arayan uygulama için bir yeniden pazarlama reklamı seçmek üzere cihazda reklam seçme işlemini yürütür.

Giriş (adSelectionConfig) Ads SDK'sı tarafından sağlanır ve AdSelectionConfig nesnesi bir Bağlayıcı çağrısı aracılığıyla aktarılır. Bu nedenle, bu nesnelerin toplam boyutu Android IPC sınırlamalarına bağlıdır. AdSelectionConfig aktarılamadıysa TransactionTooLargeException atılır.

adSelectionConfig girişi, HTTPS veya Reklam Seçimi Önceden oluşturulmuş şemalarını takip edebilen Decision Logic Uri içeriyor.

URI, HTTPS şemasını izliyorsa ana makine seller ile eşleşmelidir. Aksi takdirde IllegalArgumentException atılır.

Önceden oluşturulmuş URI'lar, scoreAds için gerekli JavaScript'ler yerine önceden oluşturulmuş genel bir mantığın yerine koyma yöntemidir. Bu uç nokta için önceden oluşturulmuş URI şu şekilde görünmelidir:

  • ad-selection-prebuilt://ad-selection/<name>?<script-generation-parameters>

Desteklenmeyen bir önceden oluşturulmuş URI iletilirse veya önceden oluşturulmuş URI özelliği hizmet tarafından devre dışı bırakılırsa IllegalArgumentException hatası verilir.

Desteklenen <name> ve zorunlu <script-generation-parameters> özellikleri için AdSelectionConfig.Builder#setDecisionLogicUri adresine bakın.

Çıkış, alıcı tarafından iletilir. Alıcı, başarılı bir çalıştırma için AdSelectionOutcome döndürür veya Exception, verilen istisnanın türünü ve ilgili hata mesajını içerir.

IllegalArgumentException hatalıysa API'nin reklam seçimini çalıştırmak için aldığı geçersiz giriş bağımsız değişkeninden kaynaklanır.

IllegalStateException, "AdSelection hizmetleri başarısızlığı" hata mesajıyla verilirse bu durum, reklam seçim hizmetinin dahili bir hatasından kaynaklanır.

TimeoutException devre dışı bırakılırsa kazanan Reklamı bulmak için teklif verme, puanlama veya genel seçim işlemi sırasında zaman aşımı yaşanır.

LimitExceededException hatası verilirse çağrı yapan paket, izin verilen hız sınırlarını aştığında ve kısıtlandığında bu hata meydana gelir.

SecurityException atlanırsa bunun nedeni, arayanın yetkilendirilmemiş olması veya izin istenmemesidir.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
adSelectionConfig AdSelectionConfig: Bu değer null olamaz.

executor Executor: Bu değer null olamaz. Geri çağırma ve işleyici etkinlikleri, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz. Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın.

receiver OutcomeReceiver: Bu değer null olamaz.

ReklamSayaç Histogramını güncelle

public void updateAdCounterHistogram (UpdateAdCounterHistogramRequest updateAdCounterHistogramRequest, 
                Executor executor, 
                OutcomeReceiver<ObjectException> outcomeReceiver)

Daha önce selectAds(android.adservices.adselection.AdSelectionConfig, java.util.concurrent.Executor, android.os.OutcomeReceiver) çağrısıyla seçilen bir reklamın sayaç histogramlarını günceller.

Sayaç histogramları, reklam seçiminde aday reklamlarda sıklık sınırı filtrelemesine bilgi sağlamak için kullanılır. Sıklık sınırlarına ulaşılan veya aşan reklamlar, reklam seçimi sırasında teklif verme işleminden çıkarılır.

Sayaç histogramları yalnızca, aynı arayan uygulamasından FLEDGE reklam seçimine yapılan son çağrı tarafından döndürülen belirtilen adSelectionId ile belirtilen reklamlar için güncellenebilir.

Şu durumlarda outcomeReceiver aracılığıyla SecurityException iade edilir:

  1. Uygulama, manifest dosyasında doğru izinleri beyan etmediyse veya
  2. callerAdTechIdentifier ile tanımlanan uygulama veya tüzel kişinin API'yi kullanma yetkisi yok.
Çağrı, ön plan etkinliği olan bir uygulamadan geliyorsa outcomeReceiver aracılığıyla bir IllegalStateException döndürülür.

Çağrı, çağrı yapan uygulamanın API kısıtlamasını aşarsa outcomeReceiver aracılığıyla bir LimitExceededException döndürülür.

Diğer tüm hata durumlarında, outcomeReceiver boş bir Object döndürür. Kullanıcı gizliliğini korumak amacıyla, dahili hataların bir istisna ile geri gönderilmeyeceğini unutmayın.
AdServicesPermissions.ACCESS_ADSERVICES_CUSTOM_AUDIENCE gerektirir

Parametreler
updateAdCounterHistogramRequest UpdateAdCounterHistogramRequest: Bu değer null olamaz.

executor Executor: Bu değer null olamaz. Geri çağırma ve işleyici etkinlikleri, hangi iş parçacığının kullanıldığını kontrol etmek için kolay bir yol sağlayan bu Executor aracılığıyla gönderilir. Etkinlikleri uygulamanızın ana iş parçacığı üzerinden göndermek için Context.getMainExecutor() kullanabilirsiniz. Aksi takdirde, uygun iş parçacığına gönderim yapan bir Executor sağlayın.

outcomeReceiver OutcomeReceiver: Bu değer null olamaz.