Google Play 游戏目前处于 Beta 版公开测试阶段。

完整性保护

受邀的开发者可以使用多项提供完整性保护的功能。Play Integrity API 和自动完整性保护功能适用于 Google Play 游戏和移动平台。

Play Integrity API

Play Integrity API 有助于保护您的游戏,使其免受可能存在风险的欺诈性互动的危害,让您能够采取适当措施来减少攻击和滥用行为(例如欺诈、欺骗和未经授权的访问)。您的游戏后端服务器可以收到关于分发渠道(通过 Play 商店许可/安装)、应用软件包(未以任何方式篡改或修改)以及设备本身(例如未取得 root 权限或未破解的设备)的信号。它是 Google 支持的唯一可提供可靠信号的解决方案,这些信号表明用户使用的是 Google Play 游戏平台,而非其他虚拟环境。这可以帮助实现以下几点:

  • 通过确保您的 APK 是由 Google Play 分发和安装的,防止未经授权的访问。
  • 通过验证确认您的游戏后端服务器正在与未经修改的二进制文件进行交互,防止 APK 篡改。
  • 确保新发布的 x86 二进制文件在 Google Play 游戏虚拟环境中运行,并且不容易在不受支持的界面中被利用。

Play Integrity API 通过一个加密令牌将多个信号整合到一起。它会针对通过 Google Play 完整性检查的真机 Android 设备和虚拟环境提供良好完整性判断结果。我们建议在应用运行时在关键游戏事件中使用 Play Integrity API,例如,在用户进行应用内购买或在游戏保存用户得分时使用该 API。不建议以预定义的方式使用该 API,例如在预先确定的时间调用该 API。

该 API 可提供极大的灵活性,但需要在可信服务器上运行额外的代码。设备端验证不安全,不建议这样做。完整的解决方案必须包含一个服务器端组件,为完整性检查和响应验证提供必要的基础。我们强烈建议您避免将二元的“是/否”决定发送回设备,而是根据 Play Integrity API 提供的结论微调您的应用行为。

Play Integrity API 是 SafetyNet Attestation API (SNAA) 和 Play App Licencing API 的承续产品。SNAA 不适用于 Google Play 游戏,因为在验证 Google Play 游戏的完整性时,SNAA 只会返回负面信号。

设备完整性字段

deviceIntegrity 字段包含单个值,即 deviceRecognitionVerdict,它表示设备可以在多大程度上强制执行应用完整性检查。默认情况下,deviceRecognitionVerdict 可以具有以下某个标签:

  • MEETS_DEVICE_INTEGRITY:应用正在由 Google Play 服务提供支持的 Android 设备上运行。设备通过了系统完整性检查,并且满足 Android 兼容性要求。
  • MEETS_VIRTUAL_INTEGRITY:应用正在由 Google Play 服务提供支持的虚拟 Android 环境(目前仅限于 Google Play 游戏)中运行。该环境满足核心 Android 兼容性要求,并且通过了 Google Play 完整性检查。
  • 无标签(例如,一个空白值):应用正在有攻击迹象(如 API 挂接)或系统被侵迹象(如取得 root 权限)的设备上运行,或者应用正在未通过 Google Play 完整性检查的非实体设备(如模拟器)上运行。

Play Integrity API 使用 deviceRecognitionVerdict 标签 MEETS_VIRTUAL_INTEGRITY 来指示游戏正在 Google Play 游戏平台运行。以下是 Play Integrity API 发出的表示已通过完整性检查的响应示例:

deviceIntegrity: {
    // "MEETS_VIRTUAL_INTEGRITY" indicates the game is running on Google Play Games
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

确保您的验证逻辑会检查 Google Play 游戏中的 MEETS_VIRTUAL_INTEGRITY 标签。

如果您的跨平台游戏也在移动设备上提供,请确保您的验证逻辑也会检查 MEETS_DEVICE_INTEGRITY 标签。

如需了解详情,请参阅 Play Integrity API 文档

自动完整性保护

自动完整性保护是 Google Play 在每次您的游戏打开时添加的运行时检查。如果您的游戏遭到篡改或未通过 Google Play 安装,自动完整性保护会阻止游戏运行。它不会检查设备,有必要使用 Play Integrity API 来获取设备完整性状态。

自动完整性保护通过以下功能帮助保护完整性:

  • 必须从 Google Play 安装:添加用于检测应用的安装来源是否为 Google Play 的检查。如果应用未能通过此检查,系统会提示用户从 Google Play 获取该应用。这项推荐的功能在默认情况下处于开启状态,但可以关闭。如果您关闭此功能,系统会停用针对付费应用的防盗版保护。
  • 限制修改:添加用于检测应用是否未经修改的检查。如果未能通过此检查,则应用不会运行。此功能始终处于开启状态,无法关闭。
  • 限制逆向工程:添加混淆技术及其他先进技术,使运行时检查不易被移除。此功能始终处于开启状态,无法关闭。

自动完整性保护要求开发者选择启用,而无需更改代码或进行开发工作。无论是否存在移动网络或互联网连接,都会运行保护,并且不需要服务器端组件。注意,如果设备上的 Play 商店应用长时间处于离线状态,则“必须从 Play 安装”检查会定期要求进行数据网络连接。

其他 Google Play 游戏注意事项

Play 提供了一系列完整性产品,用于帮助保护您的游戏。如需详细了解可用的产品,请参阅 Play Integrity 文档。本部分重点介绍将这些产品与 Google Play 游戏结合使用时需要特别注意的事项。

从分发范围中排除不可信的设备

Google Play 管理中心内有一项设置,可用于阻止在未通过完整性检查的设备上从 Google Play 安装您的应用

此功能目前与 Google Play 游戏不兼容,并会阻止游戏分发至此平台。请勿在设备目录中启用此排除规则。

Play Integrity API

Play Integrity API 使用 deviceRecognitionVerdict 标签 MEETS_VIRTUAL_INTEGRITY 来指示游戏正在 Google Play 游戏平台运行。以下是 Play Integrity API 发出的表示已通过完整性检查的响应示例:

deviceIntegrity: {
    // "MEETS_DEVICE_INTEGRITY" is one of several possible values.
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

确保您的验证逻辑会检查 MEETS_VIRTUAL_INTEGRITY 标签。

如需了解详情,请参阅 Play Integrity API 文档