使用 Play 年齡信號 API (Beta 版)

使用 Play Age Signals API (測試版) 即表示您同意服務條款,並同意遵守所有 Google Play 開發人員計畫政策。如要要求取得使用者的狀態和年齡層,請在執行階段從應用程式呼叫 API。當使用者位於 Google Play 依法必須提供年齡類別資料的地區時,Play Age Signals API 才會傳回他們的資料。

Play 會根據適用管轄區和區域定義的年齡層,傳回年齡範圍。在適用管轄區和地區,API 傳回的預設年齡層為 0-12 歲、13-15 歲、16-17 歲和 18 歲以上,但您可能會收到自訂年齡層。Google Play 會在使用者生日後的 2 到 8 週內,自動更新使用者的快取年齡信號。

將 Play Age Signals API 整合到應用程式中

Play Age Signals API 支援搭載 Android 6.0 (API 級別 23) 以上版本的手機、摺疊式裝置和平板電腦。如要將 Play Age Signals API 整合到應用程式中,請在應用程式的 build.gradle 檔案中新增下列依附元件:

implementation 'com.google.android.play:age-signals:0.0.3'

要求年齡信號

以下範例說明如何發出年齡信號請求:

Kotlin

// Create an instance of a manager
val ageSignalsManager =
    AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext())

// Request an age signals check
ageSignalsManager
    .checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { ageSignalsResult ->
        // Store the install ID for later...
        val installId = ageSignalsResult.installId()

        if (ageSignalsResult.userStatus() == AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED) {
          // Disallow access...
        } else {
           // Do something else if the user is VERIFIED, DECLARED, SUPERVISED, etc.
        }
    }

Java

// Create an instance of a manager
AgeSignalsManager ageSignalsManager =
    AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext());

// Request an age signals check
ageSignalsManager
    .checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(
        ageSignalsResult -> {
          // Store the install ID for later...
          String installId = ageSignalsResult.installId();

          if (ageSignalsResult
              .userStatus()
              .equals(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)) {
            // Disallow access ...
          } else {
            // Do something else if the user is SUPERVISED, VERIFIED, etc.
          }
        });

(選用) 接收自訂年齡層

在適用管轄區和區域,API 傳回的預設年齡層為 0-12 歲、13-15 歲、16-17 歲和 18 歲以上。

如要根據應用程式的最低使用年齡自訂預設年齡層,請前往 Google Play 管理中心的「年齡信號」頁面,為應用程式提供這些最低使用年齡。

  1. 前往 Play 管理中心的「年齡信號」頁面。
  2. 在「自訂年齡範圍」分頁中,輸入應用程式最多三個最低年齡。各最低年齡間需相差至少 2 歲,且每年只能修改一次。
  3. 按一下 [儲存]。

傳回的年齡層範圍會覆寫預設的 API 回應。例如:

  • 如果您在 Google Play 管理中心設定一個最低年齡 (15 歲):

    • 如果是 0 到 14 歲,則會傳回 ageLower = 0 和 ageUpper = 14。
    • 年滿 15 歲者會回傳 ageLower = 15。
  • 如果設定兩個最低年齡 (13 歲和 17 歲):

    • 0 到 12 歲的兒童會看到 ageLower = 0 和 ageUpper = 12。
    • 如果是 13 到 16 歲,則會傳回 ageLower = 13 和 ageUpper = 16。
    • 年滿 17 歲,則會傳回 ageLower = 17。
  • 如果設定三個最低年齡 (11 歲、13 歲和 15 歲):

    • 0 到 10 歲的兒童會傳回 ageLower = 0 和 ageUpper = 10。
    • 如果是 11 或 12 歲,則會傳回 ageLower = 11 和 ageUpper = 12。
    • 如果是 13 或 14 歲,則會傳回 ageLower = 13 和 ageUpper = 14。
    • 年滿 15 歲者會回傳 ageLower = 15。

年齡信號回應

Play Age Signals API (Beta 版) 回應包含下列欄位和值。這些值可能會有所變動。如要取得最新值,請在應用程式開啟時要求 API 回應。您有責任使用這些信號,提供適合年齡層的體驗。

回應欄位 值 說明
userStatus 已驗證 Google 採用商業上合理的驗證方式 (例如政府核發的身分證件、信用卡或臉部年齡估算),確認使用者年齡。如果 userStatus 為 VERIFIED,您可以忽略其他欄位。

使用 ageLower 和 ageUpper 判斷使用者的年齡層。
已聲明 使用者、家長或法定監護人聲明的使用者年齡。

使用 ageLower 和 ageUpper 判斷使用者的年齡範圍。
受監護 使用者擁有受監護的 Google 帳戶,且年齡由家長設定。

使用 ageLower 和 ageUpper 判斷使用者的年齡層。

使用 mostRecentApprovalDate 判斷上次核准的重大變更。
SUPERVISED_APPROVAL_PENDING 使用者擁有受監護的 Google 帳戶,且監護家長尚未核准一或多項待處理的重大變更。

使用 ageLower 和 ageUpper 判斷使用者的年齡層。

使用 mostRecentApprovalDate 判斷上次核准的重大變更。
SUPERVISED_APPROVAL_DENIED 使用者擁有受監護的 Google 帳戶,且監護家長拒絕核准一或多項重大變更。

使用 ageLower 和 ageUpper 判斷使用者的年齡層。

使用 mostRecentApprovalDate 判斷上次核准的重大變更。
不明 系統無法判斷使用者的年齡,且使用者位於適用管轄範圍或區域。

僅適用於美國州別:如要從 Google Play 取得年齡信號,請要求使用者前往 Play 商店解決狀態問題。
null 使用者不在適用管轄區和地區。

或者使用者未與應用程式分享年齡。
ageLower 0 至 18 受監護使用者年齡範圍的下限 (含)。

使用 ageLower 和 ageUpper 判斷使用者的年齡範圍。
null
userStatus 的來源不明或為 null。
ageUpper 2 至 18 歲 受監護使用者年齡範圍的上限 (含)。

使用 ageLower 和 ageUpper 判斷使用者的年齡範圍。
null userStatus受到監護,且使用者家長認證年齡超過 18 歲。

或者 userStatus 不明或為 null。
mostRecentApprovalDate 日期戳記 最近一次獲准重大變更的effective from日期。安裝應用程式時,系統會使用安裝前最近一次重大變更的日期。
null 或 userStatus 受到監督,且未提交任何重大變更。

或 userStatus 已驗證、不明或 null。
installID Play 產生的英數字元 ID。 Google Play 指派給受監護使用者安裝的 ID,用於通知您應用程式核准遭撤銷。 請參閱撤銷應用程式核准說明文件。
null 「userStatus」已通過驗證、不明或 null。

巴西使用者的回應範例

在巴西,userStatus 只能是 DECLARED、UNKNOWN 或 null。

如果使用者已聲明年齡並與應用程式分享,您會收到以下資訊:

  • userStatus 會是 AgeSignalsVerificationStatus.DECLARED。
  • ageLower 會是數字 (例如 13)。
  • ageUpper 會是數字或 null (例如 15)。
  • 其他回應欄位為 null。

如果使用者年齡不詳,您會收到以下資訊:

  • userStatus 會是 AgeSignalsVerificationStatus.UNKNOWN。
  • 其他回應欄位為 null。

如果使用者不允許應用程式取得年齡資訊,您會收到下列資訊:

  • userStatus 會是 null。
  • 其他回應欄位為 null。

使用者年齡可供分享後,使用者狀態可能會變更為 DECLARED。

美國各州使用者的回覆範例

在適用的美國州別,userStatus 可以是 VERIFIED、SUPERVISED、SUPERVISED_APPROVAL_PENDING、SUPERVISED_APPROVAL_DENIED、UNKNOWN 或 null。

通過驗證的使用者會收到以下資訊:

  • userStatus 會是 AgeSignalsVerificationStatus.VERIFIED。
  • ageLower 應為數字 (例如 18)。
  • ageUpper 應為數字或 null (例如 null)。
  • 其他回應欄位為 null。

如果是受監護的使用者,您會收到以下訊息:

  • userStatus 會是 AgeSignalsVerificationStatus.SUPERVISED。
  • ageLower 會是數字 (例如 13)。
  • ageUpper 會是數字或 null (例如 15)。
  • 會是 Java 日期物件 (例如 2026-01-01) 或 null (如果沒有核准重大變更)。mostRecentApprovalDate
  • installID 是 Play 產生的英數字元 ID (例如 550e8400-e29b-41d4-a716-446655441111)。

如果受監護使用者有待核准的重大變更,您會收到下列訊息:

  • userStatus 會是 AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING。
  • ageLower 會是數字 (例如 13)。
  • ageUpper 會是數字或 null (例如 15)。
  • 會是 Java 日期物件 (例如 2026-01-01) 或 null (如果沒有核准重大變更)。mostRecentApprovalDate
  • installID 是 Play 產生的英數字元 ID (例如 550e8400-e29b-41d4-a716-446655441111)。

處理 API 錯誤代碼

如果應用程式發出 Play Age Signals API 要求,但呼叫失敗,應用程式會收到錯誤代碼。造成這些錯誤的原因有很多,例如 Play 商店應用程式版本過舊。

重試策略

在使用者處於工作階段中時,建議您實作重試策略,並以最大重試次數做為結束條件,盡可能避免錯誤干擾使用者體驗。

錯誤代碼的數值 錯誤代碼 說明 可重試
-1 API_NOT_AVAILABLE Play Age Signals API 無法使用。裝置上安裝的 Play 商店應用程式版本可能過舊。

解決方法
  • 請使用者更新 Play 商店。
是
-2 PLAY_STORE_NOT_FOUND 裝置上找不到 Play 商店應用程式。 請使用者安裝或啟用 Play 商店。 是
-3 NETWORK_ERROR 找不到可用的網路。 請使用者檢查連線狀態。 是
-4 PLAY_SERVICES_NOT_FOUND Play 服務無法使用或版本過舊。 請使用者安裝、更新或啟用 Play 服務。 是
-5 CANNOT_BIND_TO_SERVICE 無法與 Play 商店中的服務繫結,原因可能是裝置上安裝的 Play 商店版本過舊,或是裝置記憶體超載。請使用者更新 Play 商店應用程式。 以指數輪詢方式重試。 是
-6 PLAY_STORE_VERSION_OUTDATED Play 商店應用程式需要更新。 請使用者更新 Play 商店應用程式。 是
-7 PLAY_SERVICES_VERSION_OUTDATED Play 服務需要更新。請使用者更新 Play 服務。 是
-8 CLIENT_TRANSIENT_ERROR 用戶端裝置發生暫時性錯誤。 實作重試策略,並以最大重試次數做為結束條件。如果問題仍未解決,請要求使用者稍後再試。 是
-9 APP_NOT_OWNED 應用程式不是透過 Google Play 安裝。 請使用者從 Google Play 取得您的應用程式。 否
-10 SDK_VERSION_OUTDATED 系統已不再支援 Play 年齡信號 SDK 版本。請使用者將應用程式更新至較新版本,該版本須使用新版 Play 年齡信號 SDK。 否
-100 INTERNAL_ERROR 未知的內部錯誤。 實作重試策略,並以最大重試次數做為結束條件。如果問題仍未解決,請要求使用者稍後再試。如果持續失敗,請與 Google Play 開發人員支援團隊聯絡,並在主旨中加入 Play Age Signals API,盡可能提供詳細的技術資訊 (例如錯誤報告)。 否