Система лицензирования без подключения к интернету - PullRequest
2 голосов
/ 07 октября 2011

Я тестирую систему лицензирования для 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 Ответ

4 голосов
/ 07 октября 2011

Вы можете использовать пользовательский класс 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));
}

}

Это очень мало, что я сделал, и она отлично работает.

...