我正在 Swift 3.0 应用程序中实现应用内购买,因此我需要获取应用程序收据以根据 iTunes 商店进行验证。以下是我获取收据的方式:
\n\nfunc getReceipt() -> Data? {\n if Bundle.main.appStoreReceiptURL != nil {\n print("app receipt: \\(Bundle.main.appStoreReceiptURL)")\n do {\n let receiptData = try Data(contentsOf: Bundle.main.appStoreReceiptURL!)\n print(receiptData)\n return receiptData\n } catch {\n print("error converting receipt to Data: \\(error.localizedDescription)")\n }\n }\n return nil\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的收据 URL 控制台输出是:
\n\n\n\n\n应用程序收据:可选(文件:///Users/dustinspengler/Library/Developer/XCPGDevices/433E8E8F-B781-4ADC-A92D-5CABC28E94D6/data/Containers/Data/Application/C25BE9B6-FB64-4D49-9CF2-9DA371060A7B/StoreKit/收据)
\n
然后它无法将收据转换为Data并打印 catch 语句:
\n\n\n将收据转换为数据时出错:文件 \xe2\x80\x9creceipt\xe2\x80\x9d 无法打开\xe2\x80\x99,因为没有此类文件。
\n
在游乐场、模拟器和真实设备中运行此程序时,我得到完全相同的输出,那么考虑到用户尚未进行应用内购买,这是否意味着该应用程序不存在收据?当阅读苹果的文档时,我的印象是它们总是被创建,无论之前是否购买过。
\n这个答案基于应用程序在本地计算机上运行的上下文。如果该应用程序已在应用程序商店中上线,即使该应用程序是免费的,您在下载该应用程序时就会收到收据。
@Paulw11 回答:
在用户购买之前不会有收据。对于从 App Store 下载的应用程序(即使是免费的)。这是一次购买,所以会有收据。对于来自 Xcode 的调试版本,在进行应用内购买之前不会有收据。
| 归档时间: |
|
| 查看次数: |
2924 次 |
| 最近记录: |