我有一个付费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,阅读有关我的问题(this,this,this,this,this,this和this ...)不同的资源,但我还是不明白下一步做什么来获得从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
任何答案感谢,谢谢。
所有收据字段在申请回执中的二进制格式。您应该使用任何类型的应用程序接收解码器,以获得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
}