如何在IAP Swift中获得正确的原始购买和到期日期

时间:2019-02-06 16:25:15

标签: ios swift in-app-purchase

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

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:“ 1000000500500768”,productID:“ com.myApp.skLLC.autoRenewableSubscription”,originalPurhaseDate:“ 2019-01-17 11:50:53 Etc / GMT”,isTrialPeriod:“ false”,webOrderLineItem:“ 1000000042609588”,到期日期:“ 2019-02-06 15:55:21 Etc / GMT”))

  

1 个答案:

答案 0 :(得分:1)

根据Apple文档,在沙盒环境中进行测试时,一个月的订阅将在5分钟后过期。如果您要编写/测试一些与此相关的代码,请尝试在5分钟内完成。