我使用ServerManagedPolicy在示例代码后面的应用程序中实现了android licensing。
许可证检查程序工作正常,但是当设备或模拟器没有数据连接时,许可代码将始终返回dontAllow(),而我希望它允许。我似乎无法在上面的页面上找到任何有关如何避免这种情况的细节。
这是使用测试帐户的问题,它们将在1分钟后(最小值)过期缓存结果
这可能是因为您可以更改服务器为测试提供的所有可能性的响应,并且您不希望等待缓存过期,或者强制它为每种情况刷新。
latform-tools/adb install <file>.apk
”命令我可以确认,对于Play商店内部测试轨道上的版本,validityTimestamp确实设置为服务器成功“允许”响应后一分钟。在进一步的研究中,我知道那一分钟的缓存期是从哪里来的。它未由服务器明确设置。它实际上在lvl-library代码中,如上所述可编辑。通常(对于生产版本),服务器将validityTimestamp返回到“extras”中的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对这种不可解析的String的响应是使validityTimestamp为当前时间加一分钟(MILLS_PER_MINUTE)。