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