本页介绍如何设置您的应用程序或游戏以使用 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 Console 中启用 Play 完整性 API 响应。
在 Google Play 管理中心中设置(推荐)
通过在 Google Play 管理中心 中启用 Play 完整性 API 响应,您可以访问其他配置选项、测试功能和 API 报告。此选项仅适用于在 Google Play 上分发的应用程序。导航到 **发布** > **应用完整性**。在 **Play 完整性 API** 下选择 **链接 Cloud 项目**。选择要链接到您的应用程序的 Cloud 项目,这将启用 Play 完整性 API 响应。现在,您可以将 Play 完整性 API 集成到您的应用程序中。
在 Google Cloud Console 中设置
在您的 Google Cloud Console 中,创建一个新的 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 Console。
使用 Google Play SDK 管理中心(推荐)
通过在 Google Play SDK 管理中心中启用 Play 完整性 API 响应,您可以访问其他配置选项。导航到 **SDK 完整性**,然后单击 **设置**。在项目配置下选择 **链接 Cloud 项目**。选择要链接到您的 SDK 的 Cloud 项目,这将启用 Play 完整性 API 响应。现在,您可以将 Play 完整性 API 集成到您的 SDK 中。请注意,访问 Google Play SDK 管理中心需符合资格标准。
使用 Google Cloud Console
您可以从您的 Google Cloud Console 中启用 Play 完整性 API 响应。在您的 Google Cloud Console 中,创建一个新的 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 上以及任何其他分发渠道上可用。即使有更高的每日最大值,您也应继续将每个用户的 经典请求 限制为不频繁的高价值操作,以保护用户数据和电池寿命。
要申请提高您的每日最大请求数,请执行以下操作
- 在 Play 管理中心中链接您用于 Play 完整性 API 的 Google Cloud 项目。
- 确保您正确实施 API 逻辑,包括推荐的重试策略。
- 使用此表格申请配额增加。
提高 Play 完整性 API 配额可能需要长达一周的时间,因此我们强烈建议您在 Google Play 管理中心或 Google Cloud Console 中监控您的 Play 完整性 API 使用情况,您也可以在那里设置配额警报,以避免对您服务的中断。
经典请求配额增加将自动应用于生成完整性令牌的客户端调用和解密和验证完整性令牌的服务器调用。标准请求配额增加将应用于解密和验证完整性令牌的服务器调用。
将 Play 完整性 API 集成到您的应用中
要将 Play 完整性 API 集成到您的应用或 SDK 中,请根据您的开发环境执行以下操作之一
Kotlin 或 Java
Play 完整性 API 的最新 Android 库可从Google 的 Maven 存储库获取。在您的应用的 build.gradle
文件中添加以下依赖项
implementation 'com.google.android.play:integrity:1.4.0'
Unity
安装Google Play 完整性插件 for Unity 1.3.0 或更高版本。有关说明,请参阅如何安装 Google 包 for Unity。
- 支持所有 2019.x、2020.x 及更高版本。
- 如果您使用的是 Unity 2018.x,则支持版本 2018.4 或更高版本。
- 不支持 Unity 2017.x 及更早版本。
原生
安装Play Core Native SDK 1.13.0 或更高版本。有关说明,请参阅 Play Core Native 的开发环境设置指南。
配置 API 响应(可选)
API 响应包含在每个请求中返回的默认裁决。如果您在 Play 管理中心中设置了 Play 完整性 API 集成,则可以自定义 API 响应。
默认响应
以下完整性裁决默认情况下在 Play 完整性 API 响应中返回
响应字段 | 值 | 描述 |
---|---|---|
设备完整性 | MEETS_DEVICE_INTEGRITY |
该应用运行在由 Google Play 服务支持的 Android 设备上。该设备通过系统完整性检查,并符合 Android 兼容性要求。 |
空(空白值) | 该应用运行在存在攻击迹象(如 API 钩子)或系统遭到破坏(如被 ROOT)的设备上,或者该应用未运行在物理设备上(如未通过 Google Play 完整性检查的模拟器)。 | |
Play 帐户详细信息 | LICENSED |
用户拥有应用授权。换句话说,用户已在 Google Play 上安装或购买了您的应用。用户在卸载应用后会保留应用授权,因此如果用户以后以其他方式获取同一应用,其用户帐户仍将获得授权。 |
UNLICENSED |
用户没有应用授权。这种情况发生在用户侧载您的应用或未从 Google Play 获取您的应用时。 | |
UNEVALUATED |
未评估授权详细信息,因为缺少要求。这可能由于以下几个原因造成:
|
|
应用完整性 | PLAY_RECOGNIZED |
应用和证书与 Google Play 分发的版本匹配。 |
UNRECOGNIZED_VERSION |
证书或包名称与 Google Play 记录不匹配。 | |
UNEVALUATED |
未评估应用完整性。缺少必要的要求,例如设备不够可靠。 |
条件响应
如果您分发到Google Play Games for PC,您将自动选择加入在设备完整性裁决中接收额外的标签
响应字段 | 标签 | 描述 |
---|---|---|
设备完整性 | MEETS_VIRTUAL_INTEGRITY |
该应用运行在由 Google Play 服务支持的 Android 模拟器上。该模拟器通过系统完整性检查,并符合核心 Android 兼容性要求。 |
可选响应
如果您在 Play 管理中心或 Play SDK 管理中心中设置了 Play 完整性 API 集成,则可以选择加入接收 API 响应中的信息。
要更改 API 响应,请访问 Play 管理中心并导航至发布>应用完整性。在响应下,编辑并保存更改。
可选设备信息
应用和 SDK 可以选择在设备完整性裁决中接收其他设备标签。在您选择加入接收其他标签后,如果每个标签条件都满足,则完整性响应将包含同一设备的多个标签。您可以准备您的后端服务器,使其根据可能响应的范围以不同方式运行。例如,返回三个标签的设备(MEETS_STRONG_INTEGRITY
、MEETS_DEVICE_INTEGRITY
和 MEETS_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 |
未评估最近的设备活动。这可能由于以下原因造成:
|
可选环境详细信息
应用可以选择加入接收有关环境的额外裁决。应用访问风险可让您知道是否正在运行其他应用,这些应用可能捕获屏幕、显示叠加层或控制设备。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 安装或预加载到设备上),这些应用可能会在请求应用上显示叠加层。 | |
EMPTY(空白值) | 如果缺少必要的要求,则不会评估应用访问风险。在这种情况下,appAccessRiskVerdict 字段为空。这可能由于以下几个原因造成:
|
|
Play Protect 裁决 | NO_ISSUES |
Play Protect 已启用,并且未在设备上发现任何应用问题。 |
NO_DATA |
Play Protect 已启用,但尚未执行扫描。该设备或 Play 商店应用可能已最近重置。 | |
POSSIBLE_RISK |
Play Protect 已关闭。 | |
MEDIUM_RISK |
Play Protect 已启用,并且已发现设备上安装了可能存在危害的应用。 | |
HIGH_RISK |
Play Protect 已启用,并且已发现设备上安装了危险的应用。 | |
UNEVALUATED |
未评估 Play Protect 裁决。缺少必要的要求,例如设备不够可靠。 |
配置经典请求设置(可选)
如果您只打算进行 标准 API 请求,请跳过此部分。
当您进行经典请求时,默认情况下,Google Play 的服务器会管理您的应用在与 Play Integrity API 交互时使用的响应加密。虽然我们建议您使用此默认选项,但您也可以选择按照以下说明管理和下载您的响应加密密钥。
让 Google 管理您的响应加密(默认和推荐)
为了保护您应用的安全性,建议您允许 Google 生成和管理您的响应加密密钥。您的后端服务器将调用 Google Play 的服务器来解密响应。
管理和下载我的响应加密密钥
如果您想在自己的安全服务器环境中本地解密完整性判定,您可以管理和下载您的响应加密密钥。要管理和下载您的响应加密密钥,您必须使用 Play 管理中心,并且您的应用必须在 Google Play 上以及任何其他分发渠道上可用。按照以下说明从 Google 管理的响应加密密钥切换到自管理响应加密密钥。
请记住不要在您的客户端应用中解密或验证收到的令牌,并且永远不要向客户端应用公开任何解密密钥。
在您更改 Play 管理中心中的响应加密管理策略之前,请确保您的服务器已正确配置,以便在 Google Play 的服务器上解密和验证完整性令牌,以避免中断。
在 Google 管理和自管理响应加密密钥之间切换
如果您当前由 Google 管理您的响应加密,并且您想切换到自己管理和下载您的响应加密密钥,请按照以下步骤操作
- 登录 Play 管理中心。
- 选择使用 Play Integrity API 的应用。
- 在左侧菜单的发布部分,转到应用完整性。
- 在Play Integrity API旁边,点击设置。
- 在页面上的经典请求部分,在响应加密旁边,点击编辑。
- 在出现的窗口中,点击管理和下载我的响应加密密钥。
- 按照说明上传公钥。
- 窗口显示上传成功后,点击保存,您的加密密钥会自动下载。
- 更改您的服务器逻辑,以便使用您的响应加密密钥在您自己的安全服务器环境中本地解密和验证完整性令牌。
- (可选)当您自行管理响应加密密钥时,您的应用仍然可以回退到 Google Play 的服务器来解密和验证响应。
如果您自行管理响应加密密钥,并且您想切换到让 Google 管理您的响应加密,请按照以下步骤操作
- 更改您的服务器逻辑,以便您只在 Google 的服务器上解密和验证。
- 登录 Play 管理中心。
- 选择使用 Play Integrity API 的应用。
- 在左侧菜单的发布部分,转到应用完整性。
- 在Play Integrity API旁边,点击设置。
- 在页面上的经典请求部分,在响应加密旁边,点击编辑。
- 在出现的窗口中,点击让 Google 管理我的响应加密(推荐)。
- 点击保存更改。