2012-04-30 1 views
10

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

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

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

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

ответ

30

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 загрузить клиентское приложение и установить приложение (см Requirements and Limitations раздел dev guide). Я не вижу какой-либо точки, которые могут вызвать этот applicationError во время выполнения на устройстве конечного пользователя, если:

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

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

+1

Отличный ответ! Благодарю. – l33t

+0

Кажется, что эта ошибка не является обязательной. Я делаю приложения уже более двух лет, и я видел эту ошибку только при запуске своих приложений на SamsungGalaxy S2 с помощью ICS. – slott

+0

Блестящий ответ, абсолютно блестящий, многие думают. – Soham

13

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

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

+4

Я думаю, что это вызвано кэшированием данных из приложения Google Play Store на вашем телефоне. Очистив данные и/или кеш (Настройки - Приложения - Магазин Google Play), я могу проверить и немедленно изменить статус лицензии. – yorkw

+0

Или еще лучше, получить аппаратное устройство, вернуть его на завод, а затем установить его основную учетную запись пользователя для учетной записи dev, на которую вы загрузили APK. – logray

+1

Для меня это заняло больше часа ... Я думал, что делаю что-то неправильно, но кажется, что иногда нужно быть терпеливым. – neon1

1

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

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

2

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

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

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

SO ответ на этот вопрос: Google License не будет функционировать должным образом до полного опубликования. Если ваше приложение находится в Alpha или Beta, и вы получаете Error 3, то вы, вероятно, хороши. Просто закомментируйте метод проверки лицензии, пока вы не будете готовы к публикации.

+0

Если у вашего приложения есть «versionCode», которого нет (опубликованных или неопубликованных) в Google Play, все ошибки должны быть отброшены. Мой первоначальный вопрос фактически содержит правильный ответ; это нереалистичный сценарий. – l33t

+0

«После того, как я изменил код версии, а затем выложил ее для публикации, около 4 часов спустя, это приложение функционировало нормально», может быть, это потому, что вы изменили код версии? И у меня с вами такая же проблема, пока я все еще думаю, что бета-тест должен быть в порядке. – Jacky

0

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