Altersangaben anfordern

In diesem Dokument wird beschrieben, wie Sie Altersangaben mithilfe der Play Age Signals API anfordern.

Das Play Age Signals 0.0.4 SDK führt eine Architektur mit zwei Funktionen ein, die darauf ausgelegt ist, Altersanfragen zu vereinfachen und unser auf der Nutzerauswahl basierendes Modell zu unterstützen. So fordern Sie Altersinformationen an:

Rufen Sie die Methode requestAgeSignalsAccess(Activity) auf, die ageSignalsStatus zurückgibt. Der Wert von ageSignalsStatus kann SHARED, NOT_SHARED oder VERIFICATION_REQUIRED sein.

  • Wenn ageSignalsStatus == NOT_SHARED: Ihre App erhält keine Alterssignale in der API-Antwort.
  • Wenn ageSignalsStatus == SHARED: Rufen Sie die Methode checkAgeSignals() auf. Wenn der Nutzer oder der Elternteil sich entschieden hat, die Altersangaben freizugeben, erhalten Sie diese als Teil der API-Antwort und können entscheiden, wie Sie die Antwort verarbeiten.
  • Wenn ageSignalsStatus == VERIFICATION_REQUIRED: Das Alter des Nutzers ist unbekannt und der Nutzer befindet sich in einem anwendbaren Rechtssystem oder einer anwendbaren Region, in der die Altersüberprüfung und die Weitergabe von Altersinformationen obligatorisch sind. Wenn Sie in diesen Regionen ein Alters-Signal von Google Play erhalten möchten, bitten Sie den Nutzer, den Play Store aufzurufen, um seinen Status zu ändern.

Die Methode requestAgeSignalsAccess(Activity) gibt unterschiedliche Werte zurück, je nachdem, ob die obligatorische Weitergabe von Informationen zur Altersgruppe in einer Region gilt:

  • Bei berechtigten Nutzern in US-Bundesstaaten, in denen App-Shops gesetzlich dazu verpflichtet sind, Entwicklern bestätigte Altersangaben zur Verfügung zu stellen, wird die Aufforderung in der App nicht ausgelöst. Stattdessen werden Nutzer aufgefordert, den Altersnachweis durchzuführen oder die Elternaufsicht einzurichten, wenn sie die Google Play Store App aufrufen. Verwenden Sie den Wert von ageSignalsStatus, um den Bestätigungsstatus zu ermitteln:
  • Für Nutzer in anderen Regionen, in denen die Altersangabe auf der Entscheidung des Nutzers oder Erziehungsberechtigten basiert:
    • Wenn die Einstellung des Nutzers Vor dem Teilen fragen lautet, wird die Aufforderung in der App angezeigt. Wenn der Nutzer einwilligt, sein Alter weiterzugeben, ist der Wert von ageSignalsStatus SHARED, andernfalls NOT_SHARED.
    • Wenn die Einstellung des Nutzers Immer teilen ist, wird die Aufforderung in der App nicht angezeigt und der Wert von ageSignalsStatus ist SHARED.
    • Wenn die Einstellung des Nutzers Never Share (Nie teilen) lautet, wird die Aufforderung in der App nicht angezeigt und der Wert von ageSignalsStatus ist NOT_SHARED.
    • Bei Nutzern mit Elternaufsicht können Eltern in den Family Link App-Einstellungen das Alter ihres Kindes angeben. Wenn die Eltern das Alter angeben, ist der Wert von ageSignalsStatus SHARED, andernfalls NOT_SHARED.

Das folgende Bild zeigt die Altersgruppenkonfiguration für Vor dem Teilen fragen in den Google Play-Einstellungen.

Das Google Play-Einstellungsmenü mit Optionen für die Weitergabe des Alters: „Vor dem Weitergeben fragen“, „Immer weitergeben“ und „Nie weitergeben“
Abbildung 1. Sie können die Altersfreigabe in den Play-Einstellungen verwalten.

Das folgende Bild zeigt die Anfrage zur Freigabe der Altersgruppe in der App, die Nutzern angezeigt wird, wenn das Alter über die API angefordert wird und ihre Einstellung Vor der Freigabe fragen lautet.

Dialog zur Einholung von Einwilligungen in der App, in dem der Nutzer aufgefordert wird, seine Altersgruppe mit der App zu teilen.
Abbildung 2. Anfrage zur Weitergabe der Altersgruppe in der App.

Das folgende Bild zeigt, wie der Nutzer die Altersfreigabe für eine bestimmte App aktivieren oder deaktivieren kann.

Einstellungsdialogfeld für eine bestimmte App mit einem Schalter zum Aktivieren oder Deaktivieren der Altersgruppenfreigabe
Abbildung 3. Die Altersfreigabe für eine bestimmte App aktivieren oder deaktivieren.

Im folgenden Beispiel sehen Sie, wie Altersinformationen angefordert werden:

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);
        });
}

Wichtige Punkte zum Code

  • Mit der Methode requestAgeSignalsAccess(Activity) wird eine blockierende Prüfung der aktuellen Altersignale und des Freigabestatus der Altersignale des Nutzers durchgeführt.
  • Nachdem Sie requestAgeSignalsAccess(Activity) aufgerufen haben, wird in Google Play nur für Nutzer ohne Elternaufsicht eine integrierte Aufforderung in der App angezeigt. Eltern von Nutzern mit Elternaufsicht können das Alter ihres Kindes freigeben, indem sie die Einstellungen für die Altersfreigabe in der Family Link App verwalten.
  • Wenn der Nutzer die Weitergabe des Alters ablehnt oder schließt, wird die Aufforderung in der App einige Male angezeigt, bevor sie unterdrückt wird.
  • Die Methode checkAgeSignals() ruft den Wert der Altersfreigabe in der API-Antwort ab. Diese Methode gibt ageRangeSource, ageUpper, ageLower und andere Werte für signifikante Änderungen zurück.