当没有数据连接处于活动状态时,Android许可ServerManagedPolicy返回dontAllow

问题描述 投票:2回答:3

我使用ServerManagedPolicy在示例代码后面的应用程序中实现了android licensing

许可证检查程序工作正常,但是当设备或模拟器没有数据连接时,许可代码将始终返回dontAllow(),而我希望它允许。我似乎无法在上面的页面上找到任何有关如何避免这种情况的细节。

android android-lvl
3个回答
2
投票

这是使用测试帐户的问题,它们将在1分钟后(最小值)过期缓存结果

这可能是因为您可以更改服务器为测试提供的所有可能性的响应,并且您不希望等待缓存过期,或者强制它为每种情况刷新。


0
投票
  1. 将示例应用上传到Market。在配置文件中进行更改。
  2. 等几个小时,在此之前你从未获得市场上的“许可”测试结果
  3. 在手机上进行测试时,请务必使用与上传时相同的APK:使用“latform-tools/adb install <file>.apk”命令

0
投票

我可以确认,对于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)。

© www.soinside.com 2019 - 2024. All rights reserved.