如何获得original_application_version(第一个购买的版本号)出收据的iOS在iOS的11?

问题描述 投票:5回答:1

我有一个付费iOS应用。

我需要得到original_application_version数量从苹果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 Advanced StoreKit视频大约在应用内购买和收货验证以及WWDC 2013 Video about using Receipts,阅读有关我的问题(thisthisthisthisthisthisthis ...)不同的资源,但我还是不明白下一步做什么来获得从App Store收到“original_application_version”。我只需要这个领域,不明白为什么会这样很难得到它。我读过这太:https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

我认为,收据不为零,只要当我运行打印在(“收据数据:(回执)”),它打印此:收据数据:可选(5141个字节)

我想,我应该解析收据拿到场。我能做到使用可解?有没有得到这个original_application_version领域的最简单的方法?是否有可能做到这一点没有收据验证?

我需要得到original_application_version场只检测由用户买的第一版本号。如果您知道任何其他解决方案,以获得第一次购买的版本号,我会很高兴听到他们的声音。

我在Xcode 9,斯威夫特4的iOS开发11

任何答案感谢,谢谢。

ios swift ios11 storekit receipt-validation
1个回答
0
投票

所有收据字段在申请回执中的二进制格式。您应该使用任何类型的应用程序接收解码器,以获得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
}
© www.soinside.com 2019 - 2024. All rights reserved.