2011-11-29 66 views
5

我無法收到我的paymentQueue:updatedTransactions:委託方法中的任何事務。只有代表方法paymentQueueRestoreCompletedTransactionsFinished:被調試器擊中。當我嘗試檢索事務數組時,我得到一個空數組。SKPaymentQueue restoreCompletedTransactions:無事務還原

首先,我買了一個不更新的產品。成功購買並從服務器驗證後,它將從付款隊列中移除。在啓動時,我打電話給付款隊列restoreCompletedTransactions方法。正如預期的那樣,Storekit要求我輸入我輸入的密碼(來自沙盒用戶)。但更新方法不會得到任何結果。只有完成方法被捕獲並且如所述,交易是空的。

我在做什麼錯了?是我的錯,還是蘋果restoreCompletedTransactions broken?

感謝和BR 尼克

+0

如果我是正確的,你必須跟蹤自己的服務器上的交易收據。 – JoePasq

+0

我這樣做。但是無論何時我調用restoreCompletedTransactions方法,它都應該恢復所有購買(所以應用內購買編程指南) – NicTesla

+1

消費品不應該恢復,它們是一次性使用的。用非消耗品進行測試。 – JoePasq

回答

3

對不起,讓你等這麼長的時間!

問題是,在蘋果In-App Purchase Programming Guide它清楚地表明,我不能採取非續訂訂閱被恢復。我將不得不親自存儲購買的產品,並實施自己的恢復功能。

我所做的是在產品名稱中包含一些標識符,告訴我,它是什麼樣的產品。 (它是一種不使用我自己的服務器來存儲產品信息的方法)因此,我的產品名稱是com.mycompany.iphone.non_renewing_30d(此產品實際上配置爲非續訂產品)

因此,當用戶進行購買時,我將此信息存儲在iDevice的CoreData數據庫中。我還包括我的過期功能,因爲我有購買日期和產品過期日期(30天)。

當時間到期時,用戶會看到一個消息對話框,指示進行新的購買。我真的不喜歡蘋果實施非續訂訂閱,因爲它告訴用戶他/她已經購買了該產品並要求他們回購,但我必須處理這個問題。

我確實建議將購買信息存儲在iOS設備上,因爲您不需要創建自己的用戶識別功能(例如userId或電子郵件地址),因爲Apple關閉了UDID唯一性。

+0

但是,當用戶卸載應用程序,他們失去了他們的購買。有沒有辦法解決? – JDx

+1

這就對了!您需要將其存儲在您自己的服務器上。要存儲特定用戶的數據,您還需要創建自己的帳戶/登錄系統。 BR – NicTesla

相關問題