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
Мне удалось снова заставить транзакции по инвентаризации работать, перебирая учетную запись, которую я тестировал, и переключаясь на новую учетную запись. Без изменения кода.
Мой предварительный вывод состоит в том, что что-то испортилось в учетной записи пользователя, которую я использовал (?). Во время тестирования я довольно сильно ударил его по множеству покупок в разных продуктах в приложении, но мне все равно нужно выяснить, что произошло, и убедиться, что это не происходит ни с одним из моих пользователей.
Пожалуйста, дайте мне знать, если у вас есть опыт с этим. Спасибо!
Ответы
Ответ 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
Я сталкиваюсь с той же ошибкой, но моя проблема в изменении даты и времени
- Перейдите к настройке и проверьте правильность даты и времени