Биллинг в приложении v3 не может запрашивать элементы без сетевого подключения или в режиме полета / полета

Прохождение через файл примера v3 при его изменении с моим проектом отлично работает. Однако мой друг просто проверил код, отключив Wi-Fi и включив режим самолета. Это, по-видимому, не позволяет запросить инвентаризацию в приложении.

// Listener that's called when we finish querying the items and subscriptions we own private final IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { @Override public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isFailure()) { // STOPS here and doesn't continue on with no network connection return; } ...... } }; 

Я думал, что после первоначальной успешной покупки v3 хранит локально в своем кеше, так что для проверки не обязательно иметь сетевое подключение. Кто-нибудь еще столкнулся с этой проблемой? Надеюсь, что я упустил что-то совершенно очевидное или если так оно и должно работать.

Кажется, я нашел ответ. В следующем примере TrivialDriveExample v3 я вызывал функцию queryInventoryAsync в функции mHelper.startSetup () следующим образом:

 Log.d(TAG, "Setup successful. Querying inventory."); mHelper.queryInventoryAsync(mGotInventoryListener); 

Вместо этого теперь я передаю список массивов String из моих SKU, на которые я хочу запросить:

 List<String> skulist = new ArrayList<String>(); skulist.add("my_sku_name1"); skulist.add("my_sku_name2"); mHelper.queryInventoryAsync(true, skulist, mGotInventoryListener); 

Затем я тестировал, включив режим полета, и я смог запросить мои покупки.

Проблема в том, что в вашем первом подходе API не знает, какие существуют SKU, и по умолчанию (версия с одним параметром) пытается запросить этот список. В режиме самолета это невозможно – либо потому, что он не кэширует список skus, либо существует некоторая внутренняя ошибка, препятствующая его завершению.

Вы можете либо отправить список SKU, которые вы хотите запросить (например, вы сделали это позже), либо можете просто подавить онлайн-запрос для списка sku.

 helper.queryInventoryAsync(false, yourListener); 

Кредиты от: jmrmb80

Это зависит скорее, если вам нужна эта информация (например, отображение цен в вашем приложении).

(См. Другие перегрузки для этой функции или уже предоставленные ответы. Скорее всего, вам не нужны SKU для проверки того, была ли сделана покупка. Думаю, поэтому я бы пошел на ответ jmrmb80 – для меня это решило проблему не Признание покупки в режиме самолета

Для меня следующий бит работал …

MHelper.queryInventoryAsync (false, mGotInventoryListener);

вместо

mHelper.queryInventoryAsync (mGotInventoryListener);

Я нашел его в другой ссылке: Ошибка обновления iventory (запрос цен на предметы). (Ответ: 6: ошибка)

Я решил проблему:

 final ArrayList<String> iabItemSkus = new ArrayList<String>(); iabItemSkus.add(MyGame.productID_FULLVERSION); // Disable SKU details if no network connection boolean checkSkuDetails = isWifiConnected() ? true : false; Gdx.app.log("IAB", "checkSkuDetails : " + checkSkuDetails); mHelper.queryInventoryAsync(checkSkuDetails, iabItemSkus, mGotInventoryListener); 

Не получить детали Sku, если не сеть.

Intereting Posts
Применение двух разных стилей шрифтов к TextView Распространение списка прокруткиViewView внутри LinearLayout Android.content.res.Resurces $ NotFoundException: Идентификатор ресурса строки # 0x0 Можно ли подписать два разных приложения с одним и тем же ключом? Вкладка «Действующие панели Android» внизу экрана Изображения JPEG имеют разные значения пикселей для нескольких устройств Как проверить, работает ли приложение на Android? Как скачать медиафайлы m3u8 в Android ClearableEditText – requestLayout () неправильно вызвал Android 4.3 Как программно загрузить Html-страницу в android и получить ее Html? Код ошибки Android Error в предварительно проверенном классе разрешен для неожиданной реализации Android: добавьте разделитель между элементами в RecyclerView Отображать текст малаяла в моем приложении Android GCM InstanceId.getToken () -> java.io.IOException: TIMEOUT Как получить список установленных приложений для Android и выбрать один для запуска