使用 Play Age Signals API(Beta 版)

使用 Play Age Signals API(Beta 版)即表示您同意遵守服务条款,并同意遵守所有 Google Play 开发者政策。如需请求用户的状态和年龄段,您可以在运行时从应用中调用该 API。Play Age Signals API 仅返回以下区域中用户的数据:根据法律规定,Play 必须提供年龄段数据的区域。

Play 会根据适用管辖区和地区定义的年龄段返回年龄范围。在适用司法管辖区和地区,API 返回的默认年龄段为 0-12、13-15、16-17 和 18 岁以上,但这些年龄段可能会根据地区要求而发生变化。

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

如需将 Play Age Signals API 集成到您的应用中,请将以下依赖项添加到应用的 build.gradle 文件中:

implementation 'com.google.android.play:age-signals:0.0.1-beta01'

请求年龄信号

以下示例展示了如何发出年龄信号请求:

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

Google Play 会在设备上为每位用户存储年龄信号。当受监督的 Google 账号的用户进入新的年龄段时,Google Play 会在用户生日后的 2 到 8 周内自动更新该用户的缓存年龄信号。

(可选)接收自定义年龄段

在适用的司法管辖区和地区,该 API 返回的默认年龄段为 0-12、13-15、16-17 和 18 岁以上。这些年龄段将来可能会根据当地要求而发生变化。

或者,如需根据应用的最低年龄值自定义年龄范围,您可以在 Google Play 管理中心的年龄信号页面上为应用提供这些最低年龄值。Age Signals API 会返回自定义的年龄范围。例如,如果您提供的最低年龄为 9 岁、15 岁和 17 岁,那么 14 岁的用户将属于 10-15 岁的年龄段。最低年龄必须至少相差 2 周岁,并且每年只能更改一次。

如需自定义 Age Signals API 返回的年龄范围,您可以为应用提供最低年龄值:

  1. 前往 Play 管理中心内的年龄信号页面。
  2. 应用的最低年龄要求标签页中,输入应用的最低年龄要求(最多三个)。
  3. 点击 Save

年龄信号响应

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

响应字段 说明
userStatus 已验证 用户已年满 18 周岁。Google 使用商业上合理的方法(例如由政府签发的身份证件、信用卡或人脸年龄估测)验证了用户的年龄。
受监督 用户拥有一个受监督的 Google 账号,该账号由设置了用户年龄的家长管理。 使用 ageLowerageUpper 确定用户的年龄段。
SUPERVISED_APPROVAL_PENDING 用户拥有受监督的 Google 账号,但其监督家长尚未批准一项或多项待处理的重大变更。 使用 ageLowerageUpper 确定用户的年龄段。 使用 mostRecentApprovalDate 确定已获批准的上次重大变更。
SUPERVISED_APPROVAL_DENIED 用户拥有受监督的 Google 账号,但其监督家长拒绝批准一项或多项重大变更。 使用 ageLowerageUpper 确定用户的年龄段。 使用 mostRecentApprovalDate 确定已获批准的上次重大变更。
未知 用户未在适用司法管辖区和地区完成验证或接受监督。这些用户可能年满 18 周岁,也可能未满 18 周岁。如需从 Google Play 获取年龄信号,请让用户访问 Play 商店以解决其状态问题。
空(空白值) 所有其他用户都会返回此值。
ageLower 0 至 18 受监督用户的年龄范围的下限(含)。 使用 ageLowerageUpper 确定用户的年龄段。
空(空白值)
userStatus 为未知或为空。
ageUpper 2 至 18 受监督用户的年龄范围的上限(含)。 使用 ageLowerageUpper 确定用户的年龄段。
空(空白值) userStatus 受监督,且用户的家长证明年龄超过 18 周岁。 或者 userStatus 已验证、未知或为空。
mostRecentApprovalDate 日期戳 最近一次获得批准的重大变更的 effective from 日期。安装应用时,系统会使用安装前最近一次重大更改的日期。
空(空白值) 或者 userStatus 处于监督状态,并且尚未提交任何重大变更。 userStatus 经过验证、未知或为空。
installID Play 生成的字母数字 ID。 Google Play 为受监督的用户安装分配的 ID,用于在应用审批被撤消时通知您。 查看有关撤消应用审批的文档。
空(空白值) userStatus 已验证、未知或为空。

处理 API 错误代码

如果您的应用发出 Play Age Signals API(Beta 版)请求,但调用失败,则您的应用会收到一个错误代码。这些错误可能是由各种原因造成的,例如 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 获取您的应用。
-100 INTERNAL_ERROR 未知内部错误。 实现重试策略,并将尝试次数上限作为退出条件。如果问题仍未解决,请让用户稍后再试。 如果该测试一直失败,请与 Google Play 开发者支持团队联系,并在主题中添加 Play Age Signals API,同时尽可能详细地提供技术信息(例如 bug 报告)。