В App Purchase пользователь отменяет tx, пока приложение находится в фоновом режиме: состояние tx остается при покупке

У меня какое-то странное поведение, когда пользователь отменяет покупку приложения (среда песочницы), когда приложение находится в фоновом режиме, а пользователь еще не вошел в магазин:

Процесс выглядит следующим образом:

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

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

Еще одно замечание: после описанных выше шагов я фактически покупаю еще один элемент в приложении (включая вход в магазин приложений). После этого я отправил приложение в фоновый режим и повторно активировал его, и оно обработает прежнюю отсутствующую транзакцию отмены.

Вывод. Пользователь, отменяющий платежную транзакцию, когда приложение находится в фоновом режиме и не выполнил вход в магазин, приводит к задержке доставки обратного вызова storekit. Доставка выполняется после того, как пользователь фактически вошел в магазин приложений, и процесс PaymentQueue запускается путем повторной активации приложения.

Такое поведение кажется неправильным, и если оно действительно так в реальной среде, я могу считать это ошибкой Storekit. Кто-то испытал такое же поведение или может указать что-то, чтобы предотвратить «зависание» tx в состоянии покупки?

Спасибо, Маркус


person marcus    schedule 10.06.2011    source источник
comment
есть такая же проблема. ты решил это?   -  person nico    schedule 30.06.2011
comment
@nico Нет, я думал о том, чтобы подать отчет об ошибке, но еще не сделал этого. Я также не уверен, если это происходит только для среды песочницы.   -  person marcus    schedule 30.06.2011
comment
Я зарегистрировал ошибку для этой проблемы.   -  person marcus    schedule 08.07.2011
comment
Под песочницей вы имеете в виду симулированную?   -  person Steven Fisher    schedule 17.08.2011
comment
@Steven от Sandbox Я имею в виду использование специального профиля и тестового пользователя iTunes из iTunes Connect. Всплывающие окна в приложении имеют индекс среда песочницы для обозначения тестового режима.   -  person marcus    schedule 17.08.2011
comment
А, спасибо за объяснение. :)   -  person Steven Fisher    schedule 20.08.2011
comment
У меня возникла проблема при тестировании с прерывистым сетевым подключением, когда я никогда не получаю обратный вызов paymentQueue:updatedTransactions:. Я заметил это, потому что у меня отображается индикатор прогресса, и он не исчезает. Поэтому мне пришлось настроить индикатор выполнения на истечение времени ожидания через некоторое время, после чего пользователь может повторить попытку покупки. Иногда при повторной попытке покупки отображается предупреждение о том, что вы уже приобрели этот товар. Скачать еще раз?   -  person Christopher Pickslay    schedule 15.09.2011
comment
Какой номер радара вы указали? Когда я жалуюсь в Интернете, я хотел бы иметь возможность ссылаться на радар.   -  person Heath Borders    schedule 25.07.2019
comment
@HeathBorders Радар был давно закрыт с «попробовать новую версию», и у меня даже нет номера. Также Apple теперь перешла к помощнику обратной связи для отчетов об ошибках.   -  person marcus    schedule 26.07.2019


Ответы (1)


Я не верю, что вы можете рассчитывать на ЧТО-НИБУДЬ, когда дело доходит до Store Kit. Вместо того, чтобы «выжидательно ждать», пока транзакция будет поставлена ​​в очередь после нажатия кнопки «Купить», просто продолжайте заниматься своими делами. Когда вы получите уведомление о транзакциях (которые могут быть завтра), обработайте их. Я полагаю, что в документации есть комментарий на этот счет — ваше приложение должно регистрироваться для получения уведомлений SK при запуске и ожидать их получения в любое время. Поэтому не встраивайте в свое приложение какие-либо сведения о «состоянии», когда речь идет о Store Kit. Просто обрабатывайте транзакции по мере их поступления.

person Craig    schedule 16.09.2011