因此,我在应用程序中拥有一个真正的自动续订订阅的基本概念,可以解锁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版本被取消。
避免这种错误并始终验证唯一的正确订阅的最佳实践是什么?
答案 0 :(得分:0)
maxWidth
您似乎会传入产品ID,以确定特定订阅是否仍处于活动状态。
您可能不想在每次启动应用程序时执行此操作,因此应将结果缓存在某处-您所需的可能只是到期日期。