如何在iOS 11中从iOS Receipt中获取original_application_version(第一次购买的版本号)?

2023-11-24

我有一个付费的 iOS 应用程序。

我需要得到original_application_versionApple AppStore 收据中的编号(用户购买的第一个版本)。

为了获取收据,当我的应用程序加载时,我使用checkReceiptFromAppStore()功能:

func checkReceiptFromAppStore() {
    let receipt = self.getReceipt()
    print("receipt Data is: \(receipt)") // prints this: receipt Data is: Optional(5141 bytes)       
}

getReceipt()函数如下:

func getReceipt() -> Data? {
    if Bundle.main.appStoreReceiptURL != nil {
        print("app receipt: \(Bundle.main.appStoreReceiptURL)")
        do {
            let receiptData = try Data(contentsOf: Bundle.main.appStoreReceiptURL!)

            return receiptData
        } catch {
            print("error converting receipt to Data: \(error.localizedDescription)")
        }
    }
    return nil
}

我看过WWDC 2017 高级 StoreKit有关应用内购买和收据验证的视频以及WWDC 2013 有关使用收据的视频, 读不同 与我的问题相关的资源(this, this, this, this, this, this, and this...),但我仍然不明白下一步该怎么做才能获得 App Store 收据中的“original_application_version”。我只需要这个字段,但不明白为什么这么难得到它。 我也读过这个:https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

我认为当我运行 print("receipt Data is: (receipt)") 时,收据不为零,它会打印:收据数据是:可选(5141 字节)

我可以认为我应该解析收据以获取该字段。我可以使用 Decodable 来做到这一点吗?有没有最简单的方法来得到这个original_application_version场地?是否可以在没有收据验证的情况下执行此操作?

我需要得到original_application_version字段仅检测用户购买的第一个版本的数量。如果您知道任何其他解决方案来获取第一个购买的版本号,我很高兴听到它们。

我正在 Xcode 9、Swift 4、iOS 11 中进行开发

任何答案表示赞赏,谢谢。


应用程序收据中的所有收据字段均采用二进制格式。您应该使用任何类型的应用程序收据解码器才能获取original_application_version。在使用应用程序内容之前验证应用程序收据总是一件好事。例如,您可以使用 RMStore 框架(RMStore)。它包含收据验证器和解码器。 Obj-C 源代码示例:

RMAppReceipt *appReceipt = RMAppReceipt.bundleReceipt;

if (appReceipt != nil && 
    [appReceipt.originalAppVersion length] > 0 && 
    ![appReceipt.originalAppVersion isEqualToString:@"1.0"]) {
    //Process your original app version 
} else {
    //Probably it is sandbox mode or app install via Xcode
    //Or maybe you should force app receipt refresh
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在iOS 11中从iOS Receipt中获取original_application_version(第一次购买的版本号)? 的相关文章

随机推荐