我正在制作一个报刊应用程序,该应用程序具有可自动续订的订阅,每12个月更新一次。问题是当已订阅的用户再次尝试购买订阅时。根据文档,如果用户已经订阅,StoreKit框架应返回SKPaymentTransactionStateRestored
,但它会在StoreKit委托方法中返回SKPaymentTransactionStateFailed
:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
步骤:
我怀疑这不是恢复之前的购买,而是提出新的购买请求并相应地更新订购周期。
这不是基于帐户的应用程序,因此我无法在服务器上存储和检查订阅期。
答案 0 :(得分:4)
您应该在应用中添加两个按钮:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
您可以在用户界面中为用户写一些解释,例如“如果您已购买此订阅只需点击恢复”
这项技术是在Apple三次或四次拒绝期间发明的,因为“用户应该有能力恢复他们的订阅”,“如果他不指望用户就不应该提示密码”(它要求用户通过时)恢复已完成的交易),等等。