1

我正在開發一個Newsstand應用程序,該應用程序具有每12個月更新一次的自動更新訂閱。問題在於已訂閱的用戶再次嘗試購買Subscription時。根據該文件,StoreKit框架應該返回SKPaymentTransactionStateRestored如果用戶已經訂閱,但它在StoreKit委託方法返回SKPaymentTransactionStateFailed自動更新訂閱錯誤

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 

步驟:

  1. 購買的是自動更新的訂閱
  2. 在成功購買,再次刪除並重新安裝該應用程序。
  3. 再次購買具有相同Apple ID和密碼的自動續訂訂閱,或嘗試在使用相同Apple ID的其他設備上購買相同的Subscription。

我懷疑,不是恢復以前的購買,而是作出新的購買請求,並相應地更新訂購週期。

這不是一個基於帳戶的應用程序,所以我無法存儲和檢查服務器上的訂閱期限。

回答

3

您應該添加兩個按鈕到您的應用程序:

  • 購買 - 將剛剛購買的自動更新訂閱
  • 還原 - 將嘗試還原存在的訂閱與[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

你可以在用戶界面中爲用戶編寫一些解釋,例如「如果您已經購買了此訂閱,請點擊恢復」

這項技術是在蘋果三到四次拒絕的情況下發明的,因爲「用戶應該有能力恢復他們的訂閱」,「如果他不期望,用戶不應該得到密碼提示」(它在恢復完成時要求用戶通過交易)等等。