SwiftyStoreKit-如何正确还原自动可再生订阅?

时间:2019-12-17 05:07:04

标签: ios swift in-app-purchase swiftystorekit

因此,我在应用程序中拥有一个真正的自动续订订阅的基本概念,可以解锁PRO功能。 我还有一个非消耗性的购买,即“一次性购买订阅”,可以永久解锁PRO功能。

我无法确定的是,当我打电话给restorePurchases(使用 SwiftyStoreKit )时,它会带来用户曾经进行的所有购买。这些可能包括多次购买同一订阅,这些购买早已过期。

接下来我要做的是在每个恢复的购买中调用verifyPurchase方法,该方法检查所购买的每个订阅的到期日期,以及是否过期-将用户的PRO取走通过清除钥匙串(因为它认为当前订阅已过期):

  case .expired(let expiryDate, let items):
             log.info("Subscription has expired on \(expiryDate)")
             log.debug(items)
             self.activeSubscription = nil
             self.clearStore()
             seal.reject(SubscriptionServiceError.expired(on: expiryDate))
  }

因此,即使用户有有效的订阅,我的应用程序中当前发生的情况是,如果他或她尝试restorePurchases,则最后一次购买verifyPurchase进行验证的机会将过期订阅,即使用户已订阅,也会导致该应用的PRO版本被取消。

避免这种错误并始终验证唯一的正确订阅的最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

来自SwiftyStoreKit docs

maxWidth

您似乎会传入产品ID,以确定特定订阅是否仍处于活动状态。

您可能不想在每次启动应用程序时执行此操作,因此应将结果缓存在某处-您所需的可能只是到期日期。