所以,我用我的应用程序设置了 Android LVL 来检查许可。这似乎适用于测试帐户。问题是,如果我关闭手机的互联网连接并尝试运行该应用程序,许可检查将失败并告诉我它没有获得许可!
一件事是,为什么它告诉我该应用程序未获得许可,更重要的是,我如何让应用程序“记住”它是否已获得许可。
所以,我用我的应用程序设置了 Android LVL 来检查许可。这似乎适用于测试帐户。问题是,如果我关闭手机的互联网连接并尝试运行该应用程序,许可检查将失败并告诉我它没有获得许可!
一件事是,为什么它告诉我该应用程序未获得许可,更重要的是,我如何让应用程序“记住”它是否已获得许可。
显然,这个问题的答案是许可证在测试时没有被缓存,而是在市场上时被缓存。我创建了一个小应用程序来测试它并且它有效!
抱歉,我也确认飞行模式会导致无法依赖任何缓存。从理论上讲,如果应用程序在线并在离线之前 ping 了许可证服务器,那么它可能会工作。但是,如果手机长时间处于离线状态,则没有缓存机制。只看代码。我针对 android 提交了一个错误: http ://code.google.com/p/android/issues/detail?id=12978
因为我的 Shout n' Snap 用户已经在确认这种愚蠢的行为。
我已经在客户端使用 2 部分挑战解决了问题。例如:
IF LICENSED:
PERSIST random key as LK
PERSIST obfuscated random key as OLK
ELSE:
if (deobfuscate(OLK) == LK)
GRANT ACCESS
ELSE:
GET LOST