2011-12-31 56 views
3
的transactionState

我的問題基本上是如何重現我在App Store與問候其他應用程序看到應用內購買的行爲:多任務和SKPaymentQueue我得到一個「卡住」 SKPaymentTransaction與SKPaymentTransactionStatePurchasing

  • 在用戶按下「購買」後,立即隱藏該按鈕,並顯示一個微調框(實質上反彈買入操作)。
  • 用戶按下取消StoreKit對話框(在應用程序或外部)導致微調框消失。

我試圖根據觀察SKPaymentQueue中的交易狀態來顯示和隱藏微調框。

我的問題是這樣的海報描述:

In App Purchase user cancels tx while app in background: tx state stays on purchasing

我看到了相同的行爲,上述無論如果測試用戶在第一或未登錄的職位。交易基本上「永久」在購物狀態的隊列中(意味着我的微調永遠顯示)。當應用程序完全退出並重新啓動(不只是多任務)時,交易不再處於支付隊列中,因此顯然不是真正的購買。這就像SKPaymentQueue「錯過」了狀態改變。

我注意到的一些更多細節是,在典型情況下,在添加付款後,交易顯示在採購狀態的隊列中。如果用戶按下取消,交易狀態將失敗。

在添加付款後立即分派任務的情況下,交易不會顯示在隊列中,直到回到應用程序。而不是看到兩個對updatedTransactions委託的調用(其中一個處於購買狀態,另一個處於失敗狀態),只有一個對具有購買狀態的updatedTransactions委託的調用。交易永遠不會失敗。

非常偶然的是,當回到應用程序時,我會得到一個事務刪除回調(在看到updatedTransaction與購買狀態之後)。即使在這種情況下,我也不會將事務的預期更新視爲失敗狀態。

我無法在應用程序商店的應用程序中重現此行爲(他們總是正確地顯示/隱藏微調器,無論任務是否消失),但我不清楚這是因爲他們在做些棘手的事情,或者如果它只是沙盒中的問題。

如何通過監視事務狀態來複制此行爲?這不是生產中的問題嗎?

謝謝!

+0

因此,另一個相關的帖子是http://stackoverflow.com/questions/4938048/skpaymenttransactionobserver-not-getting-a-callback-on-app-switch,但只是爲了澄清,我的問題是什麼是人們做得到圍繞這個錯誤? – Jeremy 2011-12-31 01:48:54

回答

0

我已經使用MKStoreKit爲我所有的應用程序。

它有一個基於塊的界面,告訴你什麼時候事務已經開始(隱藏按鈕並開始動畫)。

它還會告訴你,如果事務失敗或者它已經被競爭,所以你可以停止動畫並且恢復按鈕(如果失敗)或者在完成時顯示其他東西。

因爲它使用塊,你可以處理所有這些行爲,而無需編寫大量的樣板代碼。