2

我正在开发一个报亭应用程序,该应用程序具有自动更新订阅,每 12 个月更新一次。问题是当已经订阅的用户尝试再次购买订阅时。根据文档,SKPaymentTransactionStateRestored如果用户已经订阅,StoreKit 框架应该返回,但它SKPaymentTransactionStateFailed在 StoreKit 委托方法中返回:

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

脚步:

  1. 购买自动续订订阅
  2. 购买成功后,再次删除并重新安装应用程序。
  3. 再次使用相同的 Apple ID 和密码购买自动续订订阅,或尝试使用相同的 Apple ID 在不同设备上购买相同的订阅。

我怀疑它不是恢复以前的购买,而是提出新的购买请求并相应地更新订阅期。

这不是基于帐户的应用程序,因此我无法在服务器上存储和检查订阅期。

4

1 回答 1

4

您应该在应用程序中添加两个按钮:

  • 购买 - 将只购买自动续订订阅
  • 恢复 - 将尝试恢复现有订阅[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

您可以在用户界面中为用户写一些解释,例如“如果您已经购买了此订阅,请点击恢复”

这种技术是在 Apple 的三到四次拒绝中发明的,因为“用户应该有能力恢复他们的订阅”,“如果他不期望密码提示,用户不应该得到密码提示”(它在恢复已完成的交易时要求用户通过), 等等。

于 2013-02-12T15:00:41.377 回答