2016-11-30 51 views
4

我的應用使用訂閱模式,我收到一些用戶無法通過SKPaymentQueue.restoreCompletedTransactions恢復其訂閱的投訴。他們必須刪除應用程序並從AppStore下載它。SKReceiptRefreshRequest vs restoreCompletedTransactions

我不確定爲什麼它只發生在一些用戶身上,其中一位告訴我他通過itunes取消並重新激活,另一個關於付款問題。

那麼爲什麼他們需要重新下載應用程序?我猜測收據上的某些信息不能正確刷新,因此我正在考慮使用SKReceiptRefreshRequest而不是restoreCompletedTransactions,或者同時使用兩者。

有人可以解釋2個過程之間的區別嗎?

回答

7

這是VS RestoreCompletedTransactions SKReceiptRefreshRequest之間非常簡單的區別:

SKReceiptRefreshRequest

刷新收到詢問的App Store爲 收到的最新副本。刷新收據不會創建任何新的交易。 雖然您應該避免連續刷新多次,但這個 操作將具有與僅刷新一次相同的結果。

RestoreCompletedTransactions

恢復完成的交易創造了每 完成交易的用戶所做的,本質上重放歷史 您的交易隊列觀察一個新的事務。雖然正在恢復交易 ,但您的應用會保持其自己的狀態,以跟蹤爲什麼它會恢復已完成的交易以及如何處理它們。 多次恢復會爲每個完成的交易創建多個恢復的交易。

我們可以同時使用SKReceiptRefreshRequest &在以下情況下,恢復完成的交易,用於驗證用戶訂閱,但在這裏我們必須用於恢復已完成的交易,而不是清新的收據:

  • 如果您使用蘋果託管的內容,恢復已完成的事務將爲您的應用程序提供用於下載內容的事務對象。

  • 如果您需要支持早於iOS 7的應用程序收據不可用的iOS版本,請改爲恢復已完成的事務。

  • 如果您的應用使用非續訂訂閱,則您的應用負責恢復過程。

參考:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9

相關問題