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

Ios 如何在IAP Swift中获得正确的原始购买和到期日期,ios,swift,in-app-purchase,Ios,Swift,In App Purchase,我目前正在沙箱中测试应用内购买,以查看用户订阅当前是否处于活动状态或已过期状态。我刚订阅了一个月,收据上说订阅马上就过期了。orginalPurchaseDate和ExpiryDate看起来都不对。如何确定返回的json中的哪些日期是正确的。我将expiryDate与原始购买日期进行比较,以确定订阅是否仍处于活动状态 func checkIfSubscriptionIsActive() { IAPManager.shared.validatePurchaseReceipt { (pRec

我目前正在沙箱中测试应用内购买,以查看用户订阅当前是否处于活动状态或已过期状态。我刚订阅了一个月,收据上说订阅马上就过期了。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.iaPreceptipInfo(数量:“1”,交易ID:“1000000500768”,产品ID:“com.myApp.skLLC.autoRenewableSubscription”,原始预期日期:“2019-01-17 11:50:53 Etc/GMT”,isTrialPeriod:“false”,webOrderLineItem:“100000042609588”,到期日期:“2019-02-06 15:55:21 Etc/GMT”))


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

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

非常感谢。我以为我做得不对,这更合理,我非常感谢你。我认为我做得不对,这更有意义原始购买日期不总是在到期日之前吗?原始购买日期不总是在到期日之前吗?