我正在使用StoreKit进行应用内购买。当用户按下“取消”按钮时,我发现该API的行为古怪。处理取消的IAP交易
例如,如果我在“确认您的应用程序内购买”屏幕上按下取消,我会按照我的预期收到SKPaymentTransactionStateFailed
交易error.code == SKErrorPaymentCancelled
。
但是,如果我推动Buy,然后按取消,我得到一个Failed
交易与error.code == 0
。 error.localizedDescription
是“无法连接到iTunes Store”,这显然是谎言。
将所有Failed
交易视为可忽略的取消是很诱人的,但我也可以清楚地看到,如果设备在飞行模式下处于脱机状态,我会收到Failed
交易,并且不会显示警报弹出窗口;在这种情况下,我应该通知用户解释问题。
我注意到MKStoreKit假设所有失败都是取消。 MKStoreManager
的failedTransaction
方法永远不会被调用; MKStoreObserver
总是针对所有Failed
交易调用transactionCanceled
。 MKStoreManager.h
评论recommend no error message为transactionCanceled
,这是有道理的,但谁会通知用户关于Failed
未取消的交易?
处理这些故障的最佳做法是什么?我应该吞下错误吗?始终显示错误,即使它是多余的?
MKStoreKit 3.5不区分故障和取消。我在github https://github.com/MugunthKumar/MKStoreKit/issues/3上记录了一个问题,我已经将它修复在我的叉子中。 – 2011-04-29 06:47:16
谢谢!我合并了你的拉取请求 – Mugunth 2011-04-29 07:24:50
现在我的拉取请求被合并了,最新的MKStoreKit会自动显示失败时的错误,然后在委托上调用transactionCanceled,以便用户可以隐藏微调器。 – 2011-04-29 09:42:09