许可参考文档

LVL 类和接口

表 1 列出了通过 Android SDK 提供的许可验证库 (LVL) 中的所有源文件。所有文件都是 com.android.vending.licensing 软件包的一部分。

表 1. LVL 库类和接口的摘要。

类别 名称 说明
许可检查和结果 LicenseChecker 为启动许可检查而实例化(或子类化)的类。
LicenseCheckerCallback 为处理许可检查结果而实现的接口。
政策 Policy 为根据许可响应确定是否允许访问应用而实现的接口。
ServerManagedPolicy 默认 Policy 实现。使用许可服务器提供的设置管理许可数据的本地存储、许可有效性、重试。
StrictPolicy 替代 Policy 实现。仅基于来自服务器的直接许可响应强制执行许可。不使用缓存,也不重试请求。
数据混淆(可选)
Obfuscator 使用 Policy(例如 ServerManagedPolicy)在持久存储区中缓存许可响应数据时要实现的接口。采用混淆算法对写入或读取的数据进行编码和解码。
AESObfuscator 默认混淆器实现,使用 AES 加密/解密算法对数据进行混淆/反混淆。
设备限制(可选)
DeviceLimiter 如果您只想允许特定设备使用某个应用,可以实现该接口。从 LicenseValidator 调用。对于大多数应用,除非设计得非常谨慎,否则建议不要实现 DeviceLimiter,因为它需要后端服务器,并且可能导致用户无法访问所许可的应用。
NullDeviceLimiter 默认的 DeviceLimiter 实现,是一种空操作(允许访问所有设备)。
库核心,无需集成 ResponseData 包含许可响应字段的类。
LicenseValidator 该类用于解密和验证从许可服务器收到的响应。
ValidationException 该类指示在验证由混淆器管理的数据的完整性时发生错误。
PreferenceObfuscator 该实用程序类用于向系统的 SharedPreferences 存储区写入/从中读取经过混淆的数据。
ILicensingService 单向 IPC 接口,用于将许可检查请求传递到 Google Play 客户端。
ILicenseResultListener 单向 IPC 回调实现,应用通过它从许可服务器接收异步响应。

服务器响应

表 2 列出了 许可服务器。

表 2. 许可响应字段摘要 由 Google Play 服务器返回

字段 说明
responseCode 许可服务器返回的响应代码。响应代码为 服务器响应代码中列出的步骤。
signedData 保存许可服务器返回的数据的字符串串联,如下所示: responseCode|nonce|packageName|versionCode|userId|timestamp:extras
  • responseCode:许可服务器返回的响应代码。
  • nonce:请求的 Nonce 标识符。
  • packageName:要检查许可的应用包名称。
  • versionCode:要检查许可的应用的版本代码。
  • userId:每个应用的用户唯一 ID,同一用户会获得 另一个应用的不同 ID
  • timestamp:从以下时间跨度的毫秒数: 1970-01-01 00:00:00 世界协调时间 (UTC)。
  • extras:有助于管理许可的其他信息 。这些额外字段的 服务器响应 Extras
signature 使用应用专用密钥的 signedData 签名。

服务器响应代码

表 3 列出了 许可服务器。通常,应用应处理所有这些响应代码。默认情况下,LVL 中的 LicenseValidator 类可为您对这些响应代码进行所有必要的处理。

表 3. 许可响应中由 Google Play 服务器返回的响应代码摘要。