我刚刚在我的应用程序中实现了 LVL。我首先在我的开发人员帐户设置中设置了对“许可”的测试响应 => 一切正常;我收到这个答案。
当我将测试响应更改为“NOT_LICENSED”时,即使在更改我的开发者帐户中的值两个小时后,我仍然在我的应用程序中得到结果“LICENSED”。
知道如何解决这个问题吗?
我刚刚在我的应用程序中实现了 LVL。我首先在我的开发人员帐户设置中设置了对“许可”的测试响应 => 一切正常;我收到这个答案。
当我将测试响应更改为“NOT_LICENSED”时,即使在更改我的开发者帐户中的值两个小时后,我仍然在我的应用程序中得到结果“LICENSED”。
知道如何解决这个问题吗?
如您所知并且已经在一篇评论中写过,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 的缓存中受益。