我正在使用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