授权检查器“激活”状态的使用寿命。 用户太多频繁了?

我的应用程序是一种袖珍指南,全年都有一些数据。 我假设用户将使用该程序至less一次Internet访问来激活许可证。 或者至less这是我对Android授权系统如何工作的理解。 我正在使用ServerManagedPolicy。

它是否定期检查许可证? 有什么办法可以控制这个吗? 我不希望我的用户处于无处可去的状态,一个应用程序已经启动,并且在1周,1个月,1年之后突然启动,应用程序开始限制应用程序本身的可用性,因为许可证无法使用, 再次validation。 我的应用程序将在偏远的地方使用,在那里住几个星期甚至几个月的人可能会遇到不稳定的networking访问(一直不能被认为是理所当然的)。

我觉得我至less应该警告他们,他们每隔X周就会被要求这样做。 许可证制度是否严酷?

我知道我可以用ERROR_CONTACTING_SERVER标志,在ApplicationCheckerCallback的applicationError void处理错误。 “VT”响应是否始终如一(无法在testing帐户/我的帐户中进行testing)? 我只是好奇你们如何对待你自己的现实生活应用程序的这种情况。 我在这里错过了什么? 出于某种原因,我感觉我是。 有没有“抓”?

//编辑:

这是我现在正在尝试的代码:

// ServerManagedPolicy.java private void setValidityTimestamp(String validityTimestamp) { Long lValidityTimestamp; try { lValidityTimestamp = Long.parseLong(validityTimestamp); } catch (NumberFormatException e) { // No response or not parsable, expire in one minute. Log.w(TAG, "License validity timestamp (VT) missing, caching for a minute"); lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE; validityTimestamp = Long.toString(lValidityTimestamp); } // added by me---> private static long maxLicense = 1000 * 3600 * 24 * 30; // ~ roughly 30 days private static long minLicense = 1000 * 3600 * 24 * 3; // ~ roughly 3 days long lMax = System.currentTimeMillis() + maxLicense; long lMin = System.currentTimeMillis() + minLicense; if ((lValidityTimestamp > lMin) && (lValidityTimestamp < lMax)) { validityTimestamp = Long.toString(lMax); } // <--- added by me mValidityTimestamp = lValidityTimestamp; mPreferences.putString(PREF_VALIDITY_TIMESTAMP, validityTimestamp); } 

Solutions Collecting From Web of "授权检查器“激活”状态的使用寿命。 用户太多频繁了?"

只要我的两分钱,你可以定义一个时间段,你想检查(让说3天)。 3天后检查许可证,如果没有互联网,继续让用户使用它可以说最多一个星期,否则应用程序将不能充分发挥作用。 或者只是保持它的function,直到再次有一个连接,然后你可以检查和重置你的时间戳。 许可证检查器只会在您告诉时检查。

我可以澄清,如果需要!

祝你好运

大卫,简短的答案是由你决定的。

直接从开发者文档中取得。 例如,服务器为应用程序的许可证有效期,重试宽限期以及最大允许重试次数等提供build议值。“

根据您select如何实施该政策,您select自己的问题的答案。

即使使用ServerManagedPolicy,当您按照许可文档的检查访问部分所述调用“checkAccess()”时,您的应用程序也只会检查许可证。 如果这个电话从来没有打过,你的应用程序将继续无限期地工作 – 因此,如果你可以检测到你的用户处于他们合法地不能ping通服务器的许可证信息的情况,你可以将“checkAccess”调用包装在条件。

进一步在页面上有关于设置testing帐户以validationLVLfunction的信息。 我强烈build议充分利用该testingfunction。

我很简单地得到了答案。 通过USB连接一个真实的设备到你的电脑。 在ServerManagedPolicy.java中编辑您的LVL库源代码,并使用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)添加lValidityTimestampvariables的日志语句。 然后卸载您的应用程序清除任何以前的许可证caching时间戳,重新安装,并运行您的应用程序。 这与服务器联系,然后您的日志logging显示答案。 在我的testing中,VT从现在开始正好是1天(当许可证被检查时)。