我刚刚在我的应用中实现了LVL。我首先在我的开发者帐户设置=>中设置了对“LICENSED”的测试响应。一切正常;我收到了这个答案。
当我将测试响应更改为“NOT_LICENSED”时,即使在我的开发者帐户中更改了值后的两小时,我仍然会在我的应用中获得结果“LICENSED”。
知道如何解决这个问题吗?
答案 0 :(得分:4)
如您所知并已在一条评论中写道,ServerManagedPolicy有一个缓存。这意味着一旦您得到肯定的回复,只要它有效,就会采取此响应。 即使您已连接,应用程序也不会在上一次正面响应的有效期内联系许可服务器。缓存不仅可以用于离线使用,还可以避免耗费太多时间进行网络查询。
这是你应该做的:而不是ServerManagedPolicy
mChecker = new LicenseChecker(this,//
new ServerManagedPolicy(this,
new AESObfuscator(SALT,getPackageName(),
deviceId)), //
BASE64_PUBLIC_KEY // The public licensing key.
);
使用StrictPolicy
mChecker = new LicenseChecker(this, new StrictPolicy(), BASE64_PUBLIC_KEY);
并尝试它是否有效。完成测试后,请将其更改回来,以便用户可以从ServerManagedPolicy的缓存中获益。