处理取消的IAP交易

Dan*_*ich 8 iphone storekit in-app-purchase

我正在使用StoreKit进行应用内购买.当用户按下"取消"按钮时,我发现API的行为很古怪.

例如,如果我在"确认您的应用内购买"屏幕上按"取消",我会按照我的预期获得SKPaymentTransactionStateFailed交易error.code == SKErrorPaymentCancelled.

但如果我按下Buy然后按取消,我就会收到Failed交易error.code == 0.这error.localizedDescription是"无法连接到iTunes Store"这显然是一个谎言.

将所有Failed交易视为可忽略的取消很有诱惑力,但我也可以清楚地看到,如果设备在飞机模式下处于离线状态,我会得到一个Failed没有警报弹出窗口的交易; 在这种情况下,我应该通知用户解释问题.

我注意到MKStoreKit假设所有失败都是取消.MKStoreManagerfailedTransaction方法不会被调用; MKStoreObserver总是要求transactionCanceled所有Failed交易.该MKStoreManager.h意见建议没有错误消息transactionCanceled,这是有道理的,但谁就会通知给用户的Failed非交易取消?

处理这些故障的最佳做法是什么?我应该吞下错误吗?始终显示错误,即使它是多余的?

Ste*_*mer 11

我们有一个非常庞大的用户群通过移动连接购买东西,只显示警报

code != SKErrorPaymentCancelled && code != SKErrorPaymentNotAllowed
Run Code Online (Sandbox Code Playgroud)

显然,这是你能做的最好的事情.我还看到了你提到的取消的奇怪行为,据我所知,这是一个框架错误.