Как вы справляетесь с кодом ошибки LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED?

С помощью com.android.vending.licensing вы можете проверить, лицензировано ваше приложение или нет. Существует обратный вызов, applicationError(), который сообщает вам, если что-то пошло не так. Сегодня столкнулся с ошибкой ERROR_NOT_MARKET_MANAGED и не могу понять как с ней быть!

Вот что я сделал:

  1. В Google Play я добавил свой адрес электронной почты в качестве тестовой учетной записи.
  2. В Google Play я сохранил свое приложение (неопубликованное) с versionCode="10".
  3. На моей машине я изменил на versionCode="11".
  4. Проверка лицензии теперь завершается с ошибкой с кодом ERROR_NOT_MARKET_MANAGED.

Вопрос в том; я должен обрабатывать эту ошибку или это нереалистичный сценарий?


person l33t    schedule 30.04.2012    source источник
comment
Google предлагает устранить ошибку, вызвав метод dontAllow(): Additionally, you should implement the applicationError() method, which the LVL calls to let your application handle errors that are not retryable. You can implement the method in any way needed. In most cases, the method should log the error code and call dontAllow().   -  person Borzh    schedule 01.12.2019


Ответы (5)


ERROR_NOT_MARKET_MANAGED: название действительно говорит само за себя, приложение не управляется Android Market (сейчас называется Google Play). В частности, версия 11 вашего приложения не загружена и не опубликована в Google Play.

я должен обрабатывать эту ошибку или это нереалистичный сценарий?

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

private class MyLicenseCheckerCallback implements LicenseCheckerCallback {

    ... ...

    public void applicationError(ApplicationErrorCode errorCode) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        // This is a polite way of saying the developer made a mistake
        // while setting up or calling the license checker library.
        // Please examine the error code and fix the error.
        //String result = String.format(getString(R.string.application_error), errorCode);
        //String result = "Error";
        //handleLicensingResult(result);
    }
}

Весь смысл интеграции LVL в ваше приложение заключается в том, чтобы использовать Google Play для публикации вашего приложения, а также использовать клиентское приложение Google Play для загрузки и установки вашего приложения (см. Требования и ограничения в руководстве для разработчиков). Я не вижу причин, которые могут вызвать эту ошибку приложения во время выполнения на устройстве конечного пользователя, если:

  1. Разработчик следует правильной процедуре загрузки (для тестирования LVL) или публикации (для реального релиза) в Google Play.
  2. Конечный пользователь использует покупку клиентского приложения Google Play, загрузку и установку приложения.

Если конечный пользователь каким-то образом получит копию вашего приложения (с интегрированным LVL и загруженным/опубликованным в Google Play) из другого канала (не приобретая через Google Play) и попытается установить его на свое устройство (с установленным клиентским приложением Google Play на этом устройство), в этом случае LicenseCheckerCallback перейдет к dontAllow(), а не к applicationError(ApplicationErrorCode errorCode).

person yorkw    schedule 30.04.2012
comment
Кажется, эта ошибка не является обязательной. Я делаю приложения уже более двух лет, и я видел эту ошибку только при запуске своих приложений на SamsungGalaxy S2 с ICS. - person slott; 20.08.2012
comment
@yorkw, если вы загрузите APK напрямую из Google Play с помощью инструмента apkleecher.com, вы все равно сможете запустите этот apk-файл на симуляторе (с Google Play), и он отлично работает, не вводя ни dontAllow, ни applicationError. - person LiangWang; 02.02.2016
comment
Это также вежливый способ сказать, что Google допустил ошибку. Я получаю эту ошибку на старых устройствах, но на новых она работает как надо. - person Dpedrinha; 06.09.2017

Не тестируйте свое приложение сразу после того, как загрузите его в Google Play.

Подождите некоторое время (15-20 минут или, возможно, дольше), прежде чем начать тестирование. Google Play требуется некоторое время, чтобы распознать ваше приложение.

person Rakesh Patil    schedule 22.10.2012
comment
Я думаю, что это вызвано кешированием данных стандартного приложения Google Play Store на вашем телефоне. Очистив данные и/или кеш (Настройки — Приложения — Google Play Store), я могу проверить и немедленно изменить статус лицензии. - person yorkw; 02.12.2012
comment
Или, что еще лучше, получите аппаратное устройство, сбросьте его до заводских настроек, а затем установите его основную учетную запись пользователя на учетную запись разработчика, в которую вы загрузили APK. - person logray; 02.12.2012
comment
У меня это заняло больше часа... Я думал, что делаю что-то не так, но, видимо, иногда нужно просто потерпеть. - person neon1; 22.03.2013
comment
Я могу убедиться, что метод очистки данных/кэша @yorkw у меня сработал. - person Josh; 18.08.2013

29 июля, я обнаружил, что пока мое приложение находится в альфа- или бета-тестировании, все, что я получаю, это ошибка 3 или Error_Not_Market_Managed. На самом деле это ответ от сервера. ТАК это означает, что я прикасаюсь к серверу, и код в порядке. Независимо от того, что установлено в консоли разработчика в качестве ответа, это единственный ответ, который я получаю.

Я действительно ждал 3 дня, и нет никаких изменений. Так что нет времени ожидания, которое является приемлемым. Я даже очистил и перезагрузил весь свой телефон. Я очистил кеш Google Play и все другие фокусы. Ни одна из них не была причиной.

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

Итак, ответ таков: лицензия Google не будет работать должным образом, пока не будет полностью опубликована. Если ваше приложение находится в альфа- или бета-версии и вы получаете ошибку 3, то, скорее всего, все в порядке. Просто закомментируйте метод проверки лицензии, пока не будете готовы к публикации.

person Community    schedule 29.07.2014
comment
Если у вашего приложения есть versionCode, которого нет (опубликовано или неопубликовано) в Google Play, все ошибки должны быть отброшены. Мой исходный вопрос на самом деле содержит правильный ответ; это нереальный сценарий. - person l33t; 29.07.2014
comment
«После того, как я изменил код версии, а затем загрузил его для публикации, примерно через 4 часа это приложение заработало нормально», может быть, это потому, что вы изменили код версии? И у меня та же проблема с вами, хотя я все еще думаю, что бета-тест должен быть в порядке. - person LiangWang; 02.02.2016

На данный момент, в мае 2014 года, я должен опубликовать тестовое приложение (без загруженного производственного APK), чтобы протестировать загруженный APK и расширение OBB в бета-версии. В противном случае я всегда получал ERROR_NOT_MARKET_MANAGED при тестировании APKExpansionPolicy. И через 2 часа после публикации (уведомление на веб-странице гласило «до 24 часов») я могу получить информацию о файле расширения.

Никто, кроме тестировщиков, не может видеть опубликованное приложение, насколько я знаю.

person lk_vc    schedule 16.05.2014

Это также может произойти в старых устройствах. Я тестирую свое приложение без публикации фактической версии, и оно отлично работает на моем Galaxy S8, но я получаю это сообщение на своем Galaxy S4. Это означает, что это также вежливый способ сказать, что это также может быть ошибкой Google.

person Dpedrinha    schedule 06.09.2017