本页面介绍了如何使用设备回忆来存储和检索与特定设备相关的自定义数据。即使设备重置后,当您的应用安装在同一设备上时,您也能可靠地再次回忆起这些自定义数据。这让您可以根据您指定的行为或操作来检测并阻止设备被重复使用,同时保护用户隐私。
设备回忆的工作原理是什么?
设备回忆让应用能够以保护用户隐私的方式存储和回忆与特定设备相关的自定义数据。这些数据存储在 Google 服务器上,因此即使您的应用重新安装或设备重置后,您的应用也能可靠地回忆起您的自定义数据。例如,您可以使用此功能来回忆您发现存在严重滥用证据的设备、已兑换过高价值物品(例如免费试用)的设备,或被反复用于创建用于滥用目的新帐号的设备。设备回忆能够保护用户隐私,因为发出请求的应用只能回忆与设备关联的有限数据,而无需访问任何设备或用户标识符。启用设备回忆后,您可以执行以下操作:
- 读取每设备数据:当您获取 integrity verdict 时,您可以读取每台设备的三个自定义值或位。您可以自行定义这些值的含义;例如,您可以将这些值视为三个单独的标志,或者组合起来表示八个自定义标签。
- 修改每设备数据:获取 integrity token 后,您可以使用该 token 向 Google Play 服务器发出服务器端调用,以修改一个或多个值。您有最多 14 天的时间可以使用该 token。这样,如果您在首次执行 integrity check 后的两周内才发现滥用行为,就可以修改某个值。修改值时,也会存储修改发生的月份和年份。
设备回忆的前提条件和注意事项
设备回忆只能用于存储和回忆信息,以保护应用安全并减轻滥用、欺诈和未经授权的访问。您不得使用设备回忆来识别或跟踪单个用户或设备,也不得使用设备回忆来记录敏感的用户或设备特征,例如性别、年龄或位置数据。
设备回忆有以下前提条件:
- 设备回忆可用于手机、平板电脑、可折叠设备、电视、车载系统和 Wear OS 设备。在 Wear 设备上,设备回忆仅适用于搭载 Wear OS 5 或更高版本的设备。设备回忆不支持模拟器。
- 设备回忆要求设备上安装并启用最新版本的 Google Play 商店和 Google Play 服务。
- 设备回忆要求用户帐号拥有 Play 许可,否则 verdict 将未评估。
设备回忆有以下时间注意事项:
- 验证 integrity token 后,您有最多 14 天的时间可以使用它来存储自定义设备回忆数据。
- 设备回忆包含时间戳,因此您可以将最近修改的数据视为比很久以前修改的数据具有更高的优先级。考虑在足够长的时间后忽略或重置数据,以考虑设备可能已转手或经过翻新并重新销售。
- 设备的回收位在最后一次读取或写入访问后将存储 3 年。
- 如果您需要删除与设备关联的所有数据,您的应用可以将该设备上的所有三个值重置为 false。这将自动重置时间戳。
对于拥有多个应用和正在转移应用的开发者,设备回忆的工作原理如下:
- 您的 Google Play 开发者帐号中的所有应用都可以访问同一设备上的相同三个值。换句话说,如果您的某个应用修改了其中一个值,那么当您的所有应用安装在同一设备上时,都会读取修改后的值。
- 如果应用从一个开发者帐号转移到另一个开发者帐号,设备回忆将反映新开发者帐号的每设备数据,而非旧开发者帐号的每设备数据。
启用设备回忆
准备就绪后,在 Play 管理中心启用设备回忆:
- 登录 Play 管理中心。
- 选择将使用设备回忆的应用。
- 在左侧菜单的“发布”部分中,转到“应用完整性”。
- 在 Play Integrity API 旁边,点击“设置”。
- 在页面的“响应”部分中,点击“更改响应”。
- 开启“设备回忆”。
- 点击“保存更改”。
启用或停用设备回忆时,您在 Play 管理中心设置的任何Play Integrity API 测试响应都将被删除,您需要重新创建它们。
读取设备回忆值
设备回忆在 Play Integrity API 的传统请求和标准请求中均可使用。在标准请求中,设备回忆会在预热调用中刷新。换句话说,修改每设备数据后,您需要再次进行预热才能看到更新后的值。启用设备回忆后,您将能够在 integrity verdict 中读取设备回忆值。
修改设备回忆值
您可以通过发出类似于解码 integrity verdict 的服务器到服务器 API 调用来修改设备回忆值。将位设置为 true
也会更新其写入日期(即使它已经是 true
)。将位设置为 false
将把其写入日期重置为空。请求中未指定的任何位将保持不变。写入位与其在 verdict 中可读之间存在少量传播延迟。此延迟最长可能为 30 秒,但通常会短得多。设备回忆写入请求的频率应低于您的 integrity token 请求。它们不计入您的 integrity token 请求配额,但受非公开的防御性速率限制约束。
playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \ '{ "integrityToken": "INTEGRITY_TOKEN", "newValues": { "bitFirst": true, "bitThird": false } }'