Android IAB: "Ошибка обновления инвентаря (запрос цен на предметы)" Ошибка разработчика - программирование
Подтвердить что ты не робот

Android IAB: "Ошибка обновления инвентаря (запрос цен на предметы)" Ошибка разработчика

Я настраивал Android в биллинге приложений v3, используя класс IABHelper и следуя примеру кода, предоставленному Google. У меня это в основном работает полностью через покупку (с подписанным apk и реальной оплатой кредитной карты).

Однако в ходе тестирования я начал получать новую ошибку в QueryInventoryFinishedListener из метода queryInventoryAsync():

IABResult message: "Error refreshing inventory (querying prices of items)"
IABResult response: 5:Developer Error

Странная вещь # 1 заключается в том, что это происходит после возврата обратного вызова onIabSetupFinished() (с обычным сообщением "Hooray" ). Странная вещь №2 заключается в том, что я могу впоследствии и успешно обработать покупку приложения (используя метод launchPurchaseFlow()).

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

Я пытался использовать разные устройства, используя разные учетные записи gmail и создавая новый продукт с нуля. Я даже получаю ошибку в более ранних версиях моего приложения, которая работает правильно (что?!).

Мой вопрос: Почему я не могу запросить инвентаризацию продукта, даже после того, как IABHelper подтвердил, что настройка прошла успешно? Что может вызвать эту ошибку и как ее исправить?

Благодарим вас за понимание.

UPDATE

Мне удалось снова заставить транзакции по инвентаризации работать, перебирая учетную запись, которую я тестировал, и переключаясь на новую учетную запись. Без изменения кода.

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

Пожалуйста, дайте мне знать, если у вас есть опыт с этим. Спасибо!

4b9b3361

Ответ 1

У нас была такая же проблема в одном из наших приложений в тестовом режиме. Позже мы выяснили, что нам нужно было очистить кэш приложения Google Play Store.

Итак, вы можете попробовать это -

  • Войдите в меню настроек вашего устройства.
  • Перейдите в "Приложения" (также может быть помечен "Диспетчер приложений" ).
  • Вкладка "Все приложения".
  • Найдите и откройте приложение Google Play Store. Нажмите на него, настройки приложения будут отображаться
  • Нажмите "Очистить данные" и "Очистить кэш".

Теперь вернитесь в свое приложение и попробуйте загрузить инвентарь. Он решил нашу проблему.

Ответ 2

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

Я отправил патч для IabHelper.java, который разбивает список SKU на пакеты по 20 элементов каждый и выполняет запрос.

Вы можете его захватить: https://code.google.com/p/marketbilling/issues/detail?id=123

Ответ 3

У меня такая же проблема с этим журналом:

"InAppBillingManager.getSkuDetails: Input Error: skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items."

эта заметка упомянута в файле IInAppBillingService.aidl, см. документацию по методу getSkuDetails(..).

Таким образом, вы должны делать один и тот же процесс для каждых 20 элементов каждый раз

Ответ 4

Я сталкиваюсь с той же ошибкой, но моя проблема в изменении даты и времени

  • Перейдите к настройке и проверьте правильность даты и времени