Система лицензирования без подключения к интернету
Я тестирую систему лицензирования для Android. Именно я скомпилировал пример проекта с помощью ServerManagedPolicy, и у меня возник вопрос по этому поводу: Если я это сделаю:
Device's Internet=ON
Launch the app
Launch the check= Allow access
Device's Internet=OFF
Relaunch app and check= Allow access
Хорошо, теперь давайте посмотрим на проблему:
Device's Internet=OFF
Launch the app
Launch the check= Don't allow access
Логически я этого не хочу. Потому что приложение будет заблокировано, если пользователь запустит приложение без Интернета, даже если оно было лицензировано. Как я могу решить это? Мое приложение должно быть подключено к Интернету для работы, поэтому нет проблем с задержкой этой проверки
1 ответ
Вы можете использовать пользовательский класс LicenseValidator с handleResponse(), который будет вызывать dontAllow() для обратного вызова средства проверки лицензий, только когда политика возвращает LicenseResponse.NOT_LICENSED, и allow() во всех других случаях, включая сетевую ошибку.
public class LicenseValidator {
...
public void handleResponse(LicenseResponse response, ResponseData rawData) {
mPolicy.processServerResponse(response);
if (mPolicy.allowAccess()) {
mCallback.allow();
} else if (response == LicenseResponse.NOT_LICENSED) {
mCallback.dontAllow();
}
}
И используйте также пользовательскую Политику вместо ServerManagedPolicy:
public class MyPolicy {
private LicenseResponse mLastResponse;
public MyPolicy(Activity activity) {
mLastResponse = LicenseResponse.RETRY;
}
public void processServerResponse(LicenseResponse response) {
mLastResponse = response;
}
public boolean allowAccess() {
return (LicenseResponse.LICENSED.equals(mLastResponse));
}
}
Это то, что я сделал, и это прекрасно работает.