使用 Play Age Signals API(Beta 版)

使用 Play Age Signals API(Beta 版)即表示您同意服务条款 并同意遵守所有Google Play 开发者政策。如需请求用户的状态和年龄段,您可以在运行时从应用调用该 API。仅当用户位于 Google Play 须依法律要求提供年龄类别数据的地区时,Play Age Signals API 才会返回其数据。

Google Play 会根据适用管辖区和地区定义的年龄段返回年龄范围。在适用 管辖区和地区,API 返回的默认年龄为 0-12 岁、13-15 岁、16-17 岁和 18 岁以上,但可能会收到自定义年龄 范围。Google Play 会在用户生日后的 2 到 8 周内自动更新用户的缓存年龄信号。

将 Play Age Signals API 集成到您的应用中

搭载 Android 6.0(API 级别 23)及更高版本的手机、可折叠设备和平板电脑支持 Play Age Signals API。如需将 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 = 0ageUpper = 14
    • 15 岁以上的用户将返回 ageLower = 15
  • 如果您设置了两个最低年龄要求(13 岁和 17 岁):

    • 0-12 岁的用户将返回 ageLower = 0ageUpper = 12
    • 13-16 岁的用户将返回 ageLower = 13ageUpper = 16
    • 17 岁以上的用户将返回 ageLower = 17
  • 如果您设置了三个最低年龄要求(11 岁、13 岁和 15 岁):

    • 0-10 岁的用户将返回 ageLower = 0ageUpper = 10
    • 11 岁或 12 岁的用户将返回 ageLower = 11ageUpper = 12
    • 13 岁或 14 岁的用户将返回 ageLower = 13ageUpper = 14
    • 15 岁以上的用户将返回 ageLower = 15

年龄信号响应

Play Age Signals API(Beta 版)响应包含以下字段和值。这些值可能会发生变化。如果您想要获取最新值,请在应用打开时请求 API 响应。您有责任使用这些信号提供适合相应年龄段的体验。

响应字段 说明
userStatus 已验证 Google 使用商业上合理的方法(例如政府签发的身份证件、信用卡或面部年龄估计)验证了用户的年龄。如果 userStatusVERIFIED,您可以忽略其他字段。

使用 ageLowerageUpper 确定用户的年龄段。
已声明 用户的年龄由用户本人、其家长或法定监护人声明。

使用 ageLowerageUpper 确定用户的年龄段。
受监督 用户拥有一个由家长管理的受监督 Google 账号,其年龄由家长设置。

使用 ageLowerageUpper 确定用户的年龄段。

使用 mostRecentApprovalDate 确定上次获批的重大变更。
受监督_待批准 用户拥有一个受监督 Google 账号,其监督家长尚未批准一项或多项待批准的重大变更。

使用 ageLowerageUpper 确定用户的年龄段。

使用 mostRecentApprovalDate 确定上次获批的重大变更。
受监督_已拒绝批准 用户拥有一个受监督 Google 账号,其监督家长拒绝批准一项或多项重大变更。

使用 ageLowerageUpper 确定用户的年龄段。

使用 mostRecentApprovalDate 确定上次获批的重大变更。
未知 用户的年龄未知,且用户位于适用管辖区或地区。

仅适用于美国各州 :如需从 Google Play 获取年龄信号,请让用户访问 Play 商店以解决其状态问题。
null 或者 用户不在适用管辖区和地区。

或者 用户不与应用分享其年龄。
ageLower 0 到 18 受监督用户年龄段的下限(含)。

使用 ageLowerageUpper 确定用户的年龄段。
null
userStatus 为未知或 null
ageUpper 2 到 18 受监督用户年龄段的上限(含)。

使用 ageLowerageUpper 确定用户的年龄段。
null 或者 userStatus 为“受监督”,且用户的家长证明的年龄超过 18 岁。

或者 userStatus 为未知或 null
mostRecentApprovalDate 日期戳 上次获批的重大变更的 effective from 日期。安装应用时,系统会使用安装前上次重大变更的日期。
null 或者 userStatus 为“受监督”,且未提交任何重大变更。

或者 userStatus 为“已验证”“未知”或 null
installID 由 Google Play 生成的字母数字 ID。 Google Play 为受监督用户安装的应用分配的 ID,用于在应用批准被撤销时通知您。 请查看有关应用批准被撤销的文档。
null userStatus 为“已验证”“未知”或 null

针对巴西用户的响应示例

在巴西,userStatus 只能为 DECLAREDUNKNOWNnull

对于声明了年龄并与应用分享年龄的用户,您将收到以下信息:

  • userStatus 将为 AgeSignalsVerificationStatus.DECLARED
  • ageLower 将是一个数字(例如 13)。
  • ageUpper 将是一个数字或 null(例如 15)。
  • 其他响应字段将为 null

对于年龄未知的用户,您将收到以下信息:

  • userStatus 将为 AgeSignalsVerificationStatus.UNKNOWN
  • 其他响应字段将为 null

对于不与应用分享年龄的用户,您将收到以下信息:

  • userStatus 将为 null
  • 其他响应字段将为 null

用户的年龄 可供分享后,用户状态可能会更改为DECLARED

针对美国各州用户的响应示例

在美国适用州,userStatus 可以为VERIFIEDSUPERVISEDSUPERVISED_APPROVAL_PENDINGSUPERVISED_APPROVAL_DENIEDUNKNOWNnull

对于已验证的用户,您将收到以下信息:

  • userStatus 将为 AgeSignalsVerificationStatus.VERIFIED
  • ageLower 将是一个数字(例如 18)。
  • ageUpper 将是一个数字或 null(例如 null)。
  • 其他响应字段将为 null

对于受监督的用户,您将收到以下信息:

  • userStatus 将为 AgeSignalsVerificationStatus.SUPERVISED
  • ageLower 将是一个数字(例如 13)。
  • ageUpper 将是一个数字或 null(例如 15)。
  • mostRecentApprovalDate 将是一个 Java 日期对象(例如 2026-01-01) 或 null(如果未批准任何重大变更)。
  • installID 将是由 Google Play 生成的字母数字 ID(例如 550e8400-e29b-41d4-a716-446655441111)。

对于有待批准的重大变更的受监督用户,您将收到以下信息:

  • userStatus 将为 AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING
  • ageLower 将是一个数字(例如 13)。
  • ageUpper 将是一个数字或 null(例如 15)。
  • mostRecentApprovalDate 将是一个 Java 日期对象(例如 2026-01-01) 或 null(如果未批准任何重大变更)。
  • installID 将是由 Google 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 Age Signals SDK 版本已不再受支持。 让用户将您的应用更新到使用最新版 Play Age Signals SDK 的更高版本。
-100 INTERNAL_ERROR 未知内部错误。 实现一个重试策略,将尝试次数上限作为退出条件。如果问题仍然存在,请让用户稍后再试。 如果问题持续存在,请与 Google Play 开发者支持团队联系,并在主题中注明“Play Age Signals API”,并尽可能提供详细的技术信息(例如 bug 报告)。