2011-06-10 37 views
5

我有一些奇怪的行爲,用戶取消了應用程序購買(沙盒環境),而應用程序在後臺並且用戶尚未登錄到商店:In App Purchase用戶取消後臺應用程序中的tx:tx狀態停留在購買階段

的過程如下:沒有登錄

  • 用戶在/應用程序ID沒有在設置中設置>商店
  • 用戶點擊購買按鈕。這呼叫[[SKPaymentQueue defaultQueue] addPayment:payment];
  • 用戶立即預置主頁按鈕(應用程序去後臺)
  • Storekit彈出窗口出現要求確認購買。用戶取消
  • 應用程序再次激活,並預計會收到- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions,但不會。德克薩斯州仍在進行國家採購。

如果testuser已經登錄到商店,則此過程是不同的。在這種情況下,上述過程按預期工作。

另一句話:經過上述步驟,我實際上購買了另一個應用內商品(包括登錄到appstore)。在此之後,我將該應用程序發送到後臺並重新激活它,並且它將處理人員丟失取消事務。

結論: 用戶取消支付TX而應用程序是在後臺,不被記錄到存儲結果下旬交付storekit回調。交付是在用戶真正登錄到appstore之後完成的,並且PaymentQueue進程是通過重新激活應用程序觸發的。

這種行爲似乎是錯誤的,如果它實際上是這樣的真實環境,我可能會認爲這是一個Storekit錯誤。是否有人經歷過相同的行爲,或者可以指示某些措施來防止購買狀態下的「掛起」?

感謝, 馬庫斯

+0

也有同樣的問題。你解決了嗎? – nico 2011-06-30 16:44:44

+0

@nico不,我想過提交錯誤報告,但還沒有這樣做。我也不確定,如果這僅僅發生在沙箱環境中。 – marcus 2011-06-30 16:52:21

+0

我爲這個問題提出了一個錯誤。 – marcus 2011-07-08 18:46:10

回答

2

我不相信你可以指望任何東西,當涉及到商店套件。在「購買」按鈕被按下後,交易不會「等待期待」,而是繼續關注您的業務。當您被通知有交易(可能是明天)處理它們時。我相信在文檔中有這樣的評論 - 你的應用程序在啓動時應該註冊SK通知,並且應該在任何時候獲得它們。因此,當涉及到Store Kit時,請勿在應用程序中建立任何「狀態」意識。處理交易到達時。