У меня какое-то странное поведение, когда пользователь отменяет покупку приложения (среда песочницы), когда приложение находится в фоновом режиме, а пользователь еще не вошел в магазин:
Процесс выглядит следующим образом:
- Пользователь не вошел в систему/идентификатор приложения не установлен в меню «Настройки» > «Магазин».
- Пользователь нажимает кнопку купить. Это вызывает
[[SKPaymentQueue defaultQueue] addPayment:payment];
- Пользователь сразу нажимает кнопку «Домой» (приложение переходит в фоновый режим)
- Появляется всплывающее окно Storekit с просьбой подтвердить покупку. Пользователь отменяет
- Приложение снова активировано и ожидает получить
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
, но этого не происходит. TX все еще находится в государственной закупке.
Этот процесс отличается, если тестовый пользователь уже вошел в магазин. В этом случае описанный выше процесс работает так, как ожидалось.
Еще одно замечание: после описанных выше шагов я фактически покупаю еще один элемент в приложении (включая вход в магазин приложений). После этого я отправил приложение в фоновый режим и повторно активировал его, и оно обработает прежнюю отсутствующую транзакцию отмены.
Вывод. Пользователь, отменяющий платежную транзакцию, когда приложение находится в фоновом режиме и не выполнил вход в магазин, приводит к задержке доставки обратного вызова storekit. Доставка выполняется после того, как пользователь фактически вошел в магазин приложений, и процесс PaymentQueue запускается путем повторной активации приложения.
Такое поведение кажется неправильным, и если оно действительно так в реальной среде, я могу считать это ошибкой Storekit. Кто-то испытал такое же поведение или может указать что-то, чтобы предотвратить «зависание» tx в состоянии покупки?
Спасибо, Маркус