设置

此页面说明如何设置您的应用或游戏以使用 Play 完整性 API。您需要启用 API 的响应,然后需要将 API 集成到您的应用和应用的后端服务器中。一旦您在 Google Play 管理中心链接用于 Play 完整性 API 的 Google Cloud 项目,就会提供其他配置选项、测试功能和报告。

启用 Play 完整性 API 响应

每个调用 Play 完整性 API 的应用或 SDK 都需要使用 Google Cloud 项目来监控 API 使用情况。Google Play 上的应用可以在 Google Play 管理中心链接 Cloud 项目以启用 Play 完整性 API 响应。如果您想创建一个新的 Cloud 项目,或者您的应用专门在 Google Play 之外分发,您可以从 Google Cloud 控制台启用 Play 完整性 API 响应。

在 Google Play 管理中心设置(推荐)

通过在 Google Play 管理中心 启用 Play 完整性 API 响应,您可以访问其他配置选项、测试功能和 API 报告。此选项仅适用于在 Google Play 上分发的应用。导航到 **发布** > **应用完整性**。在 **Play 完整性 API** 下,选择 **链接 Cloud 项目**。选择要链接到您的应用的 Cloud 项目,这将启用 Play 完整性 API 响应。您现在可以将 Play 完整性 API 集成到您的应用中。

在 Google Cloud 控制台设置

在您的 Google Cloud 控制台 中,创建一个新的 Cloud 项目,或选择一个要与 Play 完整性 API 一起使用的现有 Cloud 项目。导航到 **API 和服务**。选择 **启用 API 和服务**。搜索 Play 完整性 API,然后 **启用** 它。您现在可以将 Play 完整性 API 集成到您的应用中。

SDK 提供商的设置说明

SDK 提供商必须使用他们自己的 Google Cloud 项目来调用 Play 完整性 API,以便 API 使用情况归因于 SDK,而不是使用 SDK 的各个应用。这意味着使用您的 SDK 的应用无需单独设置 Play 完整性 API。您对 Play 完整性 API 的请求会自动计入您的 SDK 的 API 使用量,而不是应用。

SDK 开发人员有两种选择来设置 Play 完整性 API:Google Play SDK 管理中心或 Google Cloud 控制台。

通过在 Google Play SDK 管理中心启用 Play 完整性 API 响应,您可以访问其他配置选项。导航到 **SDK 完整性** 并点击 **设置**。在项目配置下选择 **链接 Cloud 项目**。选择要链接到您的 SDK 的 Cloud 项目,这将启用 Play 完整性 API 响应。您现在可以将 Play 完整性 API 集成到您的 SDK 中。请注意,访问 Google Play SDK 管理中心需符合 资格标准

使用 Google Cloud 控制台

您可以从 Google Cloud 控制台启用 Play 完整性 API 响应。在您的 Google Cloud 控制台 中,创建一个新的 Cloud 项目,或选择一个要与 Play 完整性 API 一起使用的现有 Cloud 项目。导航到 **API 和服务**。选择 **启用 API 和服务**。搜索 Play 完整性 API,然后 **启用** 它。您现在可以将 Play 完整性 API 集成到您的 SDK 中。

增加 SDK 的每日 Play 完整性 API 请求数

想要增加其每日最大请求数的 SDK 提供商应填写 配额请求表。在开放评论部分,请指定您正在发出 SDK 请求,并包含您的 Maven 坐标(groupId:artifactId)或 SDK 的 URL。

增加您的每日 Play 完整性 API 请求数

您的应用每天每个应用最多可发出 10,000 个请求。如果您的应用需要处理更多用户,您可以按照以下说明申请提高此每日最大请求数。

提高每日最大请求数

要获得每日最大请求数的提升资格,您的应用必须在 Google Play 上架,此外还可以通过其他分发渠道发布。即使提高了每日最大请求数,也应继续将每个用户的经典请求限制为不频繁的高价值操作,以保护用户数据和电池电量。

要申请提高每日最大请求数,请执行以下操作

  1. 在 Play 管理中心链接您正在用于 Play Integrity API 的 Google Cloud 项目。
  2. 确保您正确实现了 API 逻辑,包括推荐的重试策略。
  3. 使用此表格申请配额增加。

提高 Play Integrity API 配额最多可能需要一周时间,因此我们强烈建议您在 Google Play 管理中心或 Google Cloud 控制台中监控 Play Integrity API 的使用情况,您也可以在那里设置配额警报,以避免服务中断。

经典请求配额的增加将自动应用于生成完整性令牌的客户端调用和解密和验证完整性令牌的服务器调用。标准请求配额的增加适用于解密和验证完整性令牌的服务器调用。

将 Play Integrity API 集成到您的应用中

要将 Play Integrity API 集成到您的应用或 SDK 中,请根据您的开发环境执行以下操作之一

Kotlin 或 Java

Play Integrity API 的最新 Android 库可从Google 的 Maven 存储库获取。将以下依赖项添加到您应用的build.gradle文件中

implementation 'com.google.android.play:integrity:1.4.0'

Unity

安装适用于 Unity 的 Google Play Integrity 插件 1.3.0 或更高版本。有关说明,请参阅如何在 Unity 中安装 Google 软件包

  • 支持所有 2019.x、2020.x 和更高版本。
  • 如果您使用的是 Unity 2018.x,则支持 2018.4 或更高版本。
  • 不支持 Unity 2017.x 和更低版本。

原生

安装Play Core 原生 SDK 1.13.0 或更高版本。有关说明,请参阅 Play Core 原生的开发环境设置指南

配置 API 响应(可选)

API 响应包含每个请求中返回的默认裁决。如果您在 Play 管理中心设置了 Play Integrity API 集成,则可以自定义 API 响应。

默认响应

默认情况下,Play Integrity API 响应中会返回以下完整性裁决

响应字段 说明
设备完整性 MEETS_DEVICE_INTEGRITY 应用正在由 Google Play 服务支持的 Android 设备上运行。该设备通过系统完整性检查,并满足 Android 兼容性要求。
空(空白值) 应用正在存在攻击迹象(例如 API 挂钩)或系统受损(例如已获得 root 权限)的设备上运行,或者应用未在物理设备上运行(例如未通过 Google Play 完整性检查的模拟器)。
Play 帐户详细信息 LICENSED 用户拥有应用授权。换句话说,用户在其设备上从 Google Play 安装或更新了您的应用。
UNLICENSED 用户没有应用授权。例如,当用户侧载您的应用或未从 Google Play 获取您的应用时,就会发生这种情况。
UNEVALUATED 由于缺少要求,未评估许可详细信息。这可能由于多种原因导致,包括以下原因:
  • 设备不够可信。
  • 用户未登录 Google Play。
  • 设备上安装的应用版本 Google Play 不认识。
应用程序完整性 PLAY_RECOGNIZED 应用和证书与 Google Play 分发的版本匹配。
UNRECOGNIZED_VERSION 证书或包名与 Google Play 记录不匹配。
UNEVALUATED 未评估应用程序完整性。缺少必要的条件,例如设备不够可信。

条件响应

如果您分发到适用于 PC 的 Google Play 游戏,您将自动选择加入接收设备完整性裁决中的附加标签

响应字段 标签 说明
设备完整性 MEETS_VIRTUAL_INTEGRITY 应用正在由 Google Play 服务支持的 Android 模拟器上运行。模拟器通过系统完整性检查,并满足核心 Android 兼容性要求。

可选响应

如果您在 Play 管理中心或 Play SDK 管理中心设置了 Play Integrity API 集成,则可以选择加入接收 API 响应中的信息。

要更改 API 响应,请访问 Play 管理中心并导航到发行 > 应用完整性。在响应下,编辑并保存您的更改。

可选设备信息

应用和 SDK 可以选择加入设备完整性裁决中的其他设备标签。选择加入接收其他标签后,如果满足每个标签条件,则完整性响应将包含同一设备的多个标签。您可以准备后端服务器以根据可能的响应范围采取不同的行为。例如,返回三个标签(MEETS_STRONG_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY)的设备比仅返回一个标签(MEETS_BASIC_INTEGRITY)的设备更值得信赖。

您还可以选择加入最近的设备活动。最近的设备活动返回的级别范围从LEVEL_1(请求数量少)到LEVEL_4(请求数量多)。例如,返回的活动级别明显高于应用典型活动级别的设备可能试图生成大量完整性令牌以分发到不受信任的设备。

响应字段 标签 说明
设备完整性 MEETS_BASIC_INTEGRITY 应用正在通过基本系统完整性检查的设备上运行。该设备可能不满足 Android 兼容性要求,并且可能未获批准运行 Google Play 服务。例如,该设备可能运行的是不识别的 Android 版本,可能已解锁引导加载程序,或者可能未经制造商认证。
MEETS_STRONG_INTEGRITY 应用正在由 Google Play 服务支持的 Android 设备上运行,并具有强大的系统完整性保证,例如基于硬件的引导完整性证明。该设备通过系统完整性检查,并满足 Android 兼容性要求。
最近的设备活动 过去一小时内此设备上每个应用的标准 API 完整性令牌请求 过去一小时内此设备上每个应用的经典 API 完整性令牌请求
LEVEL_1(最低) 10 个或更少 5 个或更少
LEVEL_2 11 到 25 之间 6 到 10 之间
LEVEL_3 26 到 50 之间 11 到 15 之间
LEVEL_4 (最高) 超过 50 个 超过 15 个
UNEVALUATED 未评估最近的设备活动。这可能是因为:
  • 设备不够可信。
  • 设备上安装的应用版本 Google Play 不认识。
  • 设备上存在技术问题。

可选环境详细信息

应用可以选择加入接收有关环境的附加裁决。应用访问风险可让您了解是否正在运行其他应用,这些应用可能会捕获屏幕、显示叠加层或控制设备。Play Protect 裁决可让您了解 Play Protect 是否在设备上启用以及它是否已发现已知的恶意软件。

选择加入接收这些裁决后,您的 API 响应将包含包含裁决的环境详细信息字段

响应字段 说明
应用访问风险裁决 KNOWN_INSTALLED 应用由 Google Play 安装或由设备制造商预加载到系统分区。
KNOWN_CAPTURING 已安装由 Google Play 安装或预加载到设备上的应用正在运行,这些应用可用于读取或捕获请求应用的输入和输出,例如屏幕录制应用。
KNOWN_CONTROLLING 已安装由 Google Play 安装或预加载到设备上的应用正在运行,这些应用可用于控制设备以及请求应用的输入和输出,例如远程控制应用。
KNOWN_OVERLAYS 已安装由 Google Play 安装或预加载到设备上的应用正在运行,这些应用可能会在请求应用上显示叠加层。
UNKNOWN_INSTALLED 安装了其他应用,这些应用并非由 Google Play 安装或由设备制造商预加载到系统分区。
UNKNOWN_CAPTURING 其他应用正在运行(并非由 Play 安装或预加载到设备上),这些应用可用于读取或捕获请求应用的输入和输出,例如屏幕录制应用。
UNKNOWN_CONTROLLING 其他应用正在运行(并非由 Play 安装或预加载到设备上),这些应用可用于控制设备以及请求应用的输入和输出,例如远程控制应用。
UNKNOWN_OVERLAYS 其他应用程序(非 Play 商店安装或设备预装)可能正在请求应用程序上显示叠加层。
空(空值) 如果缺少必要的条件,则不会评估应用程序访问风险。在这种情况下,appAccessRiskVerdict字段为空。这可能由多种原因造成,包括:
  • 设备不够可信。
  • 设备外形尺寸不是手机、平板电脑或折叠屏。
  • 设备未运行 Android 6(API 级别 23)或更高版本。
  • 设备上安装的应用版本 Google Play 不认识。
  • 设备上的 Google Play 商店版本已过期。
  • **仅限游戏:**用户帐户没有该游戏的 Play 许可证。
  • 使用verdictOptOut参数使用了标准请求。
  • 使用尚不支持标准请求应用程序访问风险的 Play Integrity API 库版本的标准请求。
Play 保护结果 NO_ISSUES(无问题) Play 保护已开启,并且未在设备上发现任何应用程序问题。
NO_DATA(无数据) Play 保护已开启,但尚未执行扫描。设备或 Play 商店应用可能刚刚重置。
POSSIBLE_RISK(潜在风险) Play 保护已关闭。
MEDIUM_RISK(中等风险) Play 保护已开启,并已发现设备上安装了可能有害的应用程序。
HIGH_RISK(高风险) Play 保护已开启,并已发现设备上安装了危险的应用程序。
UNEVALUATED 未评估 Play 保护结果。缺少必要的条件,例如设备不够可信。

配置经典请求设置(可选)

如果您只打算发出标准 API 请求,请跳过此部分。

当您发出经典请求时,默认情况下,Google Play 的服务器会管理您在与 Play Integrity API 交互时使用的响应加密。虽然我们建议您使用此默认选项,但您也可以选择按照以下说明管理和下载您的响应加密密钥。

让 Google 管理您的响应加密(默认且推荐)

为了保护您的应用安全,建议您允许 Google 生成和管理您的响应加密密钥。您的后端服务器将调用 Google Play 的服务器来解密响应。

管理和下载我的响应加密密钥

如果您想在您自己的安全服务器环境中本地解密完整性结果,您可以管理和下载您的响应加密密钥。要管理和下载您的响应加密密钥,您必须使用 Play 管理中心,并且您的应用必须可在 Google Play 上以及任何其他分发渠道上使用。请按照以下说明从 Google 管理的响应加密密钥切换到自行管理的响应加密密钥。

请记住不要在您的客户端应用中解密或验证收到的令牌,并且永远不要将任何解密密钥公开给客户端应用。

在您更改 Play 管理中心中的响应加密管理策略之前,请确保您的服务器已正确配置为在 Google Play 的服务器上解密和验证完整性令牌,以避免中断。

在 Google 管理和自行管理的响应加密密钥之间切换

如果 Google 目前正在管理您的响应加密,并且您想切换到自行管理和下载您的响应加密密钥,请按照以下步骤操作:

  1. 登录Play 管理中心
  2. 选择一个使用 Play Integrity API 的应用。
  3. 在左侧菜单的**发行版**部分,转到**应用完整性**。
  4. 在**Play Integrity API**旁边,点击**设置**。
  5. 在页面上的**经典请求**部分,在**响应加密**旁边,点击**编辑**。
  6. 在出现的窗口中,点击**管理和下载我的响应加密密钥**。
  7. 按照说明上传公钥。
  8. 窗口显示上传成功后,点击**保存**,您的加密密钥将自动下载。
  9. 更改您的服务器逻辑,以便您在您自己的安全服务器环境中使用您的响应加密密钥本地解密和验证完整性令牌。
  10. (可选)当您自行管理响应加密密钥时,您的应用仍然可以回退到 Google Play 的服务器来解密和验证响应。

如果您自行管理响应加密密钥,并且您想切换为让 Google 管理您的响应加密,请按照以下步骤操作:

  1. 更改您的服务器逻辑,以便您仅在 Google 的服务器上解密和验证。
  2. 登录Play 管理中心
  3. 选择一个使用 Play Integrity API 的应用。
  4. 在左侧菜单的**发行版**部分,转到**应用完整性**。
  5. 在**Play Integrity API**旁边,点击**设置**。
  6. 在页面上的**经典请求**部分,在**响应加密**旁边,点击**编辑**。
  7. 在出现的窗口中,点击**让 Google 管理我的响应加密(推荐)**。
  8. 点击**保存更改**。