我已经按照使用 ServerManagedPolicy 的示例代码在我的应用程序中实现了android 许可。
许可证检查器工作正常,但是当设备或模拟器没有数据连接时,许可代码将始终返回 dontAllow(),而我希望它允许。我似乎在上面的页面上找不到任何详细说明如何避免这种情况的内容。
我已经按照使用 ServerManagedPolicy 的示例代码在我的应用程序中实现了android 许可。
许可证检查器工作正常,但是当设备或模拟器没有数据连接时,许可代码将始终返回 dontAllow(),而我希望它允许。我似乎在上面的页面上找不到任何详细说明如何避免这种情况的内容。
这是使用测试帐户的问题,它们将在 1 分钟(最小值)后使缓存的结果过期
这可能是因为您可以更改服务器对测试所有可能性的响应,并且您不想等待缓存过期,或者强制它为每种情况刷新。
latform-tools/adb install <file>.apk
”命令我可以确认,对于 Play 商店内部测试轨道上的版本,validityTimestamp 确实设置为服务器成功“允许”响应后一分钟。在进一步的研究中,我知道那一分钟的缓存期是从哪里来的。它不是由服务器明确设置的。它实际上在 lvl-library 代码中,如上所述可编辑。通常(对于生产版本),服务器将validityTimestamp返回到“附加”中的ServerManagedPolicy类,如下所示:
setValidityTimestamp(extras.get("VT"));
这是该方法中发生的相关部分:
private void setValidityTimestamp(String validityTimestamp) {
Long lValidityTimestamp;
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE;
}
我添加了一些调试代码来查看该函数的 String 参数是什么。结果是一个空字符串。因此,服务器在“VT”的附加映射中没有返回任何内容。ServerManagedPolicy 中对此类不可解析字符串的响应是将validityTimestamp 设为当前时间加上一分钟(MILLS_PER_MINUTE)。