Не удается получить надежную работу Android Market Licensing (LVL). Почти всегда возвращает RETRY

Я пытаюсь заставить лицензирование Android работать в моем первом Android приложение.

Я следовал интерактивным руководствам и интегрировал код LVL с помощью ServerManagedPolicy.

Независимо от того, какой ответ теста лицензии я установил в консоли разработчика, я почти всегда (9 раз из 10) получаю LicenseResponse.RETRY. Так как DEFAULT_MAX_RETRIES = "0" это всегда превращается в NOT_LICENSED

Я пробовал:

  • Включение / выключение WiFi
  • запуск платных приложений, которые я купил (все они работают!)
  • отключив USB
  • работает в виртуальной машине и мой реальный телефон

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

Как я могу заставить это работать надежно?


Редактировать 1


Нашел это в логах. Означает ли это, что есть проблема с подключением к приложению Android Market?

08-18 21:12:16.071: INFO/LICENSE(10852): checkLicense
08-18 21:12:17.271: INFO/LicenseChecker(10852): Binding to licensing service.
08-18 21:12:17.281: WARN/ActivityManager(80): Unable to start service Intent { act=licensing.ILicensingService }: not found
08-18 21:12:17.281: ERROR/LicenseChecker(10852): Could not bind to service.
08-18 21:12:17.301: INFO/LICENSE(10852): dontAllow

2 ответа

Есть две вещи, которые могут вам помочь:

  1. Предполагая, что вы используете консоль разработчика для имитации ответа, иногда требуется больше нескольких минут, чтобы обновить ответ, полученный при предыдущих попытках. Так что, если вы смоделировали ОТКРЫТЫЙ ответ, вам, вероятно, нужно подождать некоторое время, прежде чем вы сможете получить ответ УСПЕХА. Иногда даже перезагрузка вашего устройства не поможет, так что вам просто нужно подождать.
  2. У механизма LVL есть некоторые проблемы, и даже на пользовательских устройствах вы можете получить ответ FAILED, если на устройстве какое-то время нет подключения к Интернету, или какая-то другая ошибка сети. Я рекомендую сделать несколько повторных попыток поверх встроенных повторных попыток LVL, так как я обнаружил, что нельзя доверять и подвержен ошибкам. Это, вероятно, уменьшит количество ложноотрицательных отчетов, которые вы получите от своих пользователей...

Убедитесь, что это в вашем AndroidManifest:

<uses-permission android:name="com.android.vending.CHECK_LICENSE" />

Это необходимо для запуска проверки лицензионного кода.

Другие вопросы по тегам