Я не могу показать сообщение, подобное этому: «Ваша покупка не может быть завершена. Пожалуйста, проверьте настройки сети и повторите попытку позже».
ользую StoreKit для покупок в приложении. Я обнаружил, что API странно в своем поведении, когда пользователь нажимает кнопку «Отмена».
Например, если я нажимаю Отмена на экране «Подтвердить покупку в приложении», я получаюSKPaymentTransactionStateFailed
сделка сerror.code == SKErrorPaymentCancelled
как я и ожидал.
Но если я нажму Buy, а затем нажму Cancel, я получуFailed
сделка сerror.code == 0
,error.localizedDescription
это «Не удается подключиться к iTunes Store», что явно является ложью.
Заманчиво лечить всехFailed
транзакции как игнорируемые отмены, но я также ясно вижу, что если устройство находится в автономном режиме в режиме полета, я получаюFailed
транзакция без всплывающего окна с предупреждением; Я должен действительно уведомить пользователя, чтобы объяснить проблему в этом случае.
Отмечу чтоMKStoreKit Предполагается, что все сбои отмены.MKStoreManager
«sfailedTransaction
метод никогда не вызывается;MKStoreObserver
всегда звонитtransactionCanceled
для всехFailed
сделки.MKStoreManager.h
Комментариирекомендуем не сообщать об ошибке заtransactionCanceled
, что имеет смысл, но тогда кто будет уведомлять пользователя оFailed
неотмененные транзакции?
Как лучше всего справляться с этими сбоями? Должен ли я глотать ошибки? Всегда показывать ошибку, даже если она избыточна?