【发布时间】:2019-12-17 05:07:04
【问题描述】:
所以我在应用程序中有一个非常基本的自动更新订阅概念,它可以解锁 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 最后一次购买验证有可能是一个过期的订阅,导致为用户取消的应用程序专业版,即使有有效的订阅。
避免此错误并始终验证唯一正确订阅的最佳做法是什么?
【问题讨论】:
-
如果您打算在应用程序中进行自动更新订阅并从应用程序中赚取超过 100 美元,那么您绝对应该拥有自己的后端服务器来执行所有逻辑以及服务器挂钩和收据刷新.查看更多@medium.com/@chriseelmaa/…
标签: ios swift in-app-purchase swiftystorekit