Лицензирование Android ServerManagedPolicy возвращает dontAllow, если не установлено соединение для передачи данных - PullRequest
2 голосов
/ 04 сентября 2010

Я реализовал лицензирование Android в своем приложении, следуя примеру кода с использованием ServerManagedPolicy.

Проверка лицензии работает нормально, однако, когда устройство или эмулятор не подключен к данным, тогдалицензионный код всегда будет возвращать dontAllow (), пока я хочу это разрешить.Кажется, я не могу найти на странице выше ничего такого, как это можно избежать.

Ответы [ 3 ]

2 голосов
/ 09 сентября 2010

Это проблема с использованием тестовых учетных записей, они истекают из кэшированного результата через 1 минуту (минимум)

Вероятно, это связано с тем, что вы можете изменить ответ, который сервер дает тесту на все возможности, и вам не нужно ждать истечения срока действия кэша или принудительно обновлять его для каждого случая.

0 голосов
/ 05 марта 2019

Я могу подтвердить, что для выпусков на дорожке внутреннего теста в магазине Play Store validityTimestamp действительно устанавливается на одну минуту после успешного ответа «allow» с сервера. Что касается дальнейших исследований, я знаю, откуда взялся этот минутный период кэширования. Это явно не установлено сервером. На самом деле он находится в коде библиотеки lvl, который можно редактировать, как упоминалось выше. Обычно (для производственных выпусков) сервер возвращает validityTimestamp классу ServerManagedPolicy в «extras» следующим образом:

setValidityTimestamp (extras.get ( "VT"));

и вот соответствующая часть того, что происходит в этом методе:

 private void setValidityTimestamp(String validityTimestamp) {
    Long lValidityTimestamp;
    try {
        lValidityTimestamp = Long.parseLong(validityTimestamp);
    } catch (NumberFormatException e) {
        // No response or not parsable, expire in one minute.
        lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE;
    }

Я добавил некоторый отладочный код, чтобы посмотреть, что было параметром String для этой функции. Оказывается, пустая строка. Таким образом, сервер ничего не возвращает в карте дополнений для "VT". Ответ в ServerManagedPolicy на такую ​​непарсируемую строку должен сделать validityTimestamp текущим временем плюс одну минуту (MILLS_PER_MINUTE).

0 голосов
/ 19 августа 2012
  1. Загрузите пример приложения в Market. Внесите изменения в профиль.
  2. Подождите несколько часов, прежде чем вы никогда не получите результат теста "LICENSED" с рынка
  3. При тестировании на телефоне обязательно используйте тот же APK, который вы загрузили: используйте команду "latform-tools/adb install <file>.apk"
...