ios - 如何在 IAP Swift 中获取正确的原始购买日期和过期日期

标签 ios swift in-app-purchase

我目前正在沙盒中测试应用内购买,以查看用户订阅当前是有效还是已过期。我刚订阅了一个月,收据上说订阅马上就过期了。 originalPurchaseDate 和 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")
        }
    }
}

这是我的日志

Latest Receipt: Optional(Vinylly.IAPReceiptInfo(quantity: "1", tansactionID: "1000000500500768", productID: "com.myApp.skLLC.autoRenewableSubscription", originalPurhaseDate: "2019-01-17 11:50:53 Etc/GMT", isTrialPeriod: "false", webOrderLineItem: "1000000042609588", expiresDate: "2019-02-06 15:55:21 Etc/GMT"))

最佳答案

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

关于ios - 如何在 IAP Swift 中获取正确的原始购买日期和过期日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54558202/

相关文章:

ios - 当非购买用户在 iOS 中按下恢复购买按钮时会发生什么?

ios - 如何编写 Objective-C 完成 block

ios - 如何在 UISlider 上实现缩放或放大以选择更详细的值

ios - UICollectionViewDataSource 无法执行 "fix it",在 Xcode 9.3.1 中为 "Candidate is not a function"

ios - 如何使用 ViewController 中的不同对象在每台 iPhone 和 iPad 上全屏显示?

ios - Swift中反引号的实际应用

ios - 无法从 iOS 中的位置管理器获取我的当前地址

IOS7验证iap收据,in_app filed是什么意思?

ios - 应用内购买以填充核心数据

ios - 自动续订订阅是否仅限于报亭?