dav*_*ino 8 android android-lvl
我的应用程序是一种袖珍指南,包含全年的一些数据.我假设用户将至少使用该程序一次访问Internet以激活许可证.或者至少这是我对Android许可系统如何工作的理解.我正在使用ServerManagedPolicy.
是否定期检查许可证?有什么办法可以控制吗?我不希望我的用户是在中间的地方,与已经和以前激活,1周,1个月,1年等之后突然应用程序启动限制了应用程序的可用性的应用程序本身,因为许可证couldn" 再次验证.我的应用程序将要和不稳定的网络访问偏僻的地方,使用的人谁就会生活在那里几个星期,也许几个月(不能想当然所有的时间).
我觉得我应该至少警告他们每隔X周就要问他们这样做.许可证制度是否是严厉的?
我知道我可以在applicationCheckerCallback的applicationError void上使用ERROR_CONTACTING_SERVER标志来处理错误."VT"响应是否始终相同(无法在测试帐户/我的帐户上测试)?我只是好奇你们如何在自己的现实应用程序中处理这种情况.我在这里错过了什么吗?出于某种原因,我感觉自己是.有没有"捕获"?
//编辑:
这是我正在尝试的代码:
// 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);
}
Run Code Online (Sandbox Code Playgroud)
只是我的两分钱,您可以定义您想要检查的时间段(比方说 3 天)。3天后检查许可证,如果没有互联网,继续让用户使用它最多一周,否则应用程序将无法完整运行。或者只是保持其全部功能,直到再次建立连接,然后您可以检查并重置时间戳。许可证检查器只会在您指示时进行检查。
如果需要的话我可以澄清!
祝你好运
| 归档时间: |
|
| 查看次数: |
3047 次 |
| 最近记录: |