我正在沙盒中测试应用内购买,以查看用户订阅当前是否处于活动状态或已过期。我刚订阅了一个月,收据上写着订阅马上就到期了。orginalPurchaseDate和ExpiryDate看起来都不对。如何确定json中返回的日期是正确的。我将过期日期与原始购买日期进行比较,以确定订阅是否仍处于活动状态。

func checkIfSubscriptionIsActive() {
    IAPManager.shared.validatePurchaseReceipt { (pReceipt) in
        self.receipt = pReceipt
        let expiryDate = self.receipt.last.map { $0.expiresDate}!.skTodate
        let originalPurchaseDate = self.receipt.last.map { $0.originalPurhaseDate}!.skTodate
        print("Latest Receipt: \(self.receipt.last)")
        if expiryDate?.compare(originalPurchaseDate!) == .orderedDescending {
            print("Subscription is expired")
        } else {
            print("Subscription is still active")
        }
    }
}

这是我的日志
最新收据:可选(Vinylly.IAPReceiptInfo(数量:“1”,tansactionID:“1000000500768”,productID:“com.myApp.skLLC.autoRenewableSubscription”,originalPurhaseDate:“2019-01-17 11:50:53 Etc/GMT”,isTrialPeriod:“false”,webOrderLineItem:“100000042609588”,到期日期:“2019-02-06 15:55:21 Etc/GMT”))

最佳答案

根据apple文档,在沙盒环境中测试时,一个月的订阅将在5分钟内过期。如果您想围绕这个问题编写/测试一些代码,请尝试在5分钟内完成。

10-08 09:35
查看更多