我正在Swift 3.0应用程序中实施应用程序内购买,所以我需要抓取应用程序收据才能根据iTunes商店进行验证。这里是我如何获得收据:iOS Receipt not found
func getReceipt() -> Data? {
if Bundle.main.appStoreReceiptURL != nil {
print("app receipt: \(Bundle.main.appStoreReceiptURL)")
do {
let receiptData = try Data(contentsOf: Bundle.main.appStoreReceiptURL!)
print(receiptData)
return receiptData
} catch {
print("error converting receipt to Data: \(error.localizedDescription)")
}
}
return nil
}
我对收到URL控制台输出为:
应用收据:可选(文件:///用户/ dustinspengler /库/开发/ XCPGDevices/433E8E8F-B781-4ADC-A92D-5CABC28E94D6 /数据/集装箱/数据/应用/ C25BE9B6-FB64-4D49-9CF2-9DA371060A7B/StoreKit /收据)
它此后未能将收据转化为Data
和catch语句打印:
将收据转换为数据时出错:文件“收据”无法打开,因为没有这样的文件。
我得到了一个操场,模拟器运行这个时完全相同的输出,而真正的设备,从而这是否意味着没有收据存在考虑的事实,用户尚未作出了应用内购买的应用程序然而?当通过苹果的documentation阅读时,我得到的印象是,无论先前购买什么,它们总是被创建。
在用户进行购买*之前没有收据。对于从App Store下载的应用程序(甚至是免费的应用程序)。这是*购买*,所以会有收据。对于Xcode的调试版本,只有在进行应用内购买之后才会有收据。 – Paulw11
感谢您的回复@ Paulw11!如果你想提交这个答案,我会接受它。 –
考虑到这些信息没有在苹果文档中列出,有没有人关心评论下来的投票? –