Yaş sinyalleri isteyin

Bu belgede, Play Age Signals API'yi kullanarak yaş sinyallerinin nasıl isteneceği açıklanmaktadır.

Play Age Signals 0.0.4 SDK, yaş sinyali isteklerini basitleştirmek ve kullanıcı tercihlerine dayalı modelimizi desteklemek için tasarlanmış iki işlevli bir mimari sunar. Yaş sinyalleri istemek için şu üst düzey iş akışını kullanın:

requestAgeSignalsAccess(Activity) yöntemini çağırın. Bu yöntem ageSignalsStatus değerini döndürür. ageSignalsStatus değeri SHARED, NOT_SHARED veya VERIFICATION_REQUIRED olabilir.

  • ageSignalsStatus == NOT_SHARED ise: Uygulamanız, API yanıtında yaş sinyalleri almaz.
  • ageSignalsStatus == SHARED ise: checkAgeSignals() yöntemini çağırın. Kullanıcı veya ebeveyn, yaş sinyallerini paylaşmaya karar verdiyse API yanıtının bir parçası olarak yaş sinyallerini alırsınız ve yanıtı nasıl işleyeceğinize karar verebilirsiniz.
  • ageSignalsStatus == VERIFICATION_REQUIRED ise: Kullanıcının yaşı bilinmiyor ve kullanıcı, yaş doğrulama ile yaş sinyali paylaşımının zorunlu olduğu geçerli bir yargı alanında veya bölgede bulunuyor. Bu bölgelerde Google Play'den yaş sinyali almak için kullanıcıdan durumunu düzeltmek üzere Play Store'u ziyaret etmesini isteyin.

requestAgeSignalsAccess(Activity) yöntemi, zorunlu yaş paylaşımının bir bölgede geçerli olup olmadığına bağlı olarak farklı değerler döndürür:

  • Uygulama mağazalarının geliştiricilere doğrulanmış yaş bilgisi sağlamasını zorunlu kılan yasaların geçerli olduğu ABD eyaletlerindeki uygun kullanıcılar için uygulama içi istem tetiklenmez. Bunun yerine, kullanıcılar Play Store uygulamasını ziyaret ettiklerinde doğrulama yapmaları veya gözetimi ayarlamaları istenir. Doğrulama durumunu belirlemek için ageSignalsStatus değerini kullanın:
  • Yaş paylaşımının kullanıcı veya ebeveyn tercihlerine göre yapıldığı diğer bölgelerdeki kullanıcılar için:
    • Kullanıcının ayarı Paylaşmadan önce sor ise uygulama içi istem gösterilir. Kullanıcı yaşını paylaşmayı kabul ederse ageSignalsStatus değeri SHARED, aksi takdirde NOT_SHARED olur.
    • Kullanıcının ayarı Her Zaman Paylaş ise uygulama içi istem gösterilmez ve ageSignalsStatus değeri SHARED olur.
    • Kullanıcının ayarı Asla Paylaşma ise uygulama içi istem gösterilmez ve ageSignalsStatus değeri NOT_SHARED olur.
    • Gözetimli kullanıcılar için ebeveynler, Family Link uygulaması ayarlarında çocuklarının yaşını paylaşmayı seçebilir. Ebeveynler yaşı paylaşmayı seçerse ageSignalsStatus değeri SHARED olur, aksi takdirde NOT_SHARED olur.

Aşağıdaki resimde, Play ayarlarındaki Paylaşmadan önce sor yaş grubu yapılandırması gösterilmektedir.

Google Play ayarları menüsünde yaş paylaşımı seçenekleri gösteriliyor: Paylaşmadan önce sor, Her zaman paylaş ve Hiçbir zaman paylaşma
Şekil 1. Play ayarlarında yaş paylaşımını yönetebilirsiniz.

Aşağıdaki resimde, API üzerinden yaş istendiğinde ve ayarları Paylaşmadan önce sor olarak belirlendiğinde kullanıcılara gösterilen uygulama içi yaş grubu paylaşma isteği gösterilmektedir.

Kullanıcıdan yaş grubunu uygulamayla paylaşmasını isteyen uygulama içi izin iletişim kutusu
Şekil 2. Uygulama içi yaş grubu paylaşımı isteği.

Aşağıdaki resimde, kullanıcının belirli bir uygulama için yaş paylaşımını nasıl etkinleştirebileceği veya devre dışı bırakabileceği gösterilmektedir.

Belirli bir uygulamanın ayarlar iletişim kutusunda, yaş grubu paylaşımını etkinleştirmek veya devre dışı bırakmak için kullanılan açma/kapatma düğmesi gösteriliyor.
Şekil 3. Belirli bir uygulama için yaş paylaşımını etkinleştirin veya devre dışı bırakın.

Aşağıdaki örnekte, yaş sinyallerinin nasıl isteneceği gösterilmektedir:

Kotlin

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
val ageSignalsManager = AgeSignalsManagerFactory.create(applicationContext)

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
val accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build()

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener { accessResult ->
        if (accessResult.ageSignalsStatus() == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager)
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    }
    .addOnFailureListener { exception ->
        // Handle API/Play Store connection and system errors
        handleAgeSignalsError(exception)
    }

private fun retrieveAgeSignals(manager: AgeSignalsManager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener { ageSignalsResult ->
            val installId = ageSignalsResult.installId()
            val ageLower = ageSignalsResult.ageLower()
            val ageUpper = ageSignalsResult.ageUpper()
            val significantChangeDate = ageSignalsResult.significantChangeApprovalDate()
            val ageRangeSource = ageSignalsResult.ageRangeSource()

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        }
        .addOnFailureListener { exception ->
            handleAgeSignalsError(exception)
        }
}

Java

// 1. Initialize the AgeSignalsManager (usually in onCreate or class initialization)
AgeSignalsManager ageSignalsManager = AgeSignalsManagerFactory.create(getApplicationContext());

// 2. Request or check for age signals access.
// Passing the current Activity allows the Play Store to render the age sharing prompt UI if required.
AgeSignalsAccessRequest accessRequest = AgeSignalsAccessRequest.builder()
    .setActivity(this)
    .build();

ageSignalsManager.requestAgeSignalsAccess(accessRequest)
    .addOnSuccessListener(accessResult -> {
        Integer status = accessResult.ageSignalsStatus();
        if (status == AgeSignalsStatus.SHARED) {
            // The user (or parent) has agreed to share age range, or is in an eligible auto-share region.
            // Retrieve the actual age signals.
            retrieveAgeSignals(ageSignalsManager);
        } else {
            // Age signals are not shared (user didn't share age range, parent rejected the request, or not eligible).
        }
    })
    .addOnFailureListener(exception -> {
        // Handle API/Play Store connection and system errors
    });

private void retrieveAgeSignals(AgeSignalsManager manager) {
    // 3. Perform the actual age signals query once sharing is active.
    manager.checkAgeSignals(AgeSignalsRequest.builder().build())
        .addOnSuccessListener(ageSignalsResult -> {
            String installId = ageSignalsResult.installId();
            Integer ageLower = ageSignalsResult.ageLower();
            Integer ageUpper = ageSignalsResult.ageUpper();
            Date significantChangeDate = ageSignalsResult.significantChangeApprovalDate();
            @AgeRangeSource Integer ageRangeSource = ageSignalsResult.ageRangeSource();

            if (ageLower != null) {
                if (ageUpper != null) {
                    // The user is in a specific closed age range [ageLower, ageUpper] (e.g. [13, 15])
                } else {
                    // The user is in the highest open-ended age band [ageLower, null] (e.g. [18, null])
                }
            } else {
                // Both bounds are null: The user is not sharing their age (e.g. they are a verified adult)
            }
        })
        .addOnFailureListener(exception -> {
            handleAgeSignalsError(exception);
        });
}

Kodla ilgili önemli noktalar

  • requestAgeSignalsAccess(Activity) yöntemi, kullanıcının mevcut yaş sinyallerinin ve yaş sinyalleri paylaşım durumunun engelleme kontrolünü gerçekleştirir.
  • requestAgeSignalsAccess(Activity) işlevini çağırdıktan sonra Play, yalnızca gözetimsiz kullanıcılar için yerleşik bir uygulama içi istem görüntüler. Gözetimli kullanıcıların ebeveynleri, Family Link uygulamasındaki yaş paylaşımı ayarlarını yöneterek çocuğunun yaşını paylaşabilir.
  • Kullanıcı, yaş paylaşımını kapatır veya reddederse uygulama içi istem, kapatılmadan önce birkaç kez gösterilir.
  • checkAgeSignals() yöntemi, API yanıtındaki yaş sinyali değerini alır. Bu yöntem ageRangeSource, ageUpper, ageLower ve diğer önemli değişiklik değerlerini döndürür.