【发布时间】:2026-02-11 12:20:03
【问题描述】:
我有一个付费的 iOS 应用程序。
我需要从 Apple AppStore Receipt 中获取original_application_version 号码(用户购买的第一个版本)。
为了获取收据,当我的应用加载时,我使用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,阅读不同 与我的问题相关的资源(this、this、this、this、this、this 和 this...),但我仍然不明白下一步该做什么得到 App Store 收据中的“original_application_version”。我只需要这个领域,不明白为什么这么难得到它。 我也读过这个:https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html
我认为当我运行 print("receipt Data is: (receipt)") 时,收据不是零,它会打印:receipt Data is: Optional(5141 bytes)
我可以假设我应该解析收据以获取该字段。我可以使用可解码来做到这一点吗?有没有最简单的方法来获得这个original_application_version 字段?是否可以在没有收据验证的情况下执行此操作?
我只需要获取original_application_version 字段来检测用户购买的第一个版本的编号。如果您知道任何其他解决方案来获得第一个购买的版本号,我很高兴听到它们。
我正在使用 Xcode 9、Swift 4、iOS 11 进行开发
感谢任何答案,谢谢。
【问题讨论】:
标签: ios swift ios11 storekit receipt-validation