2017-03-31 178 views
0

我正在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閱讀時,我得到的印象是,無論先前購買什麼,它們總是被創建。

+0

在用戶進行購買*之前沒有收據。對於從App Store下載的應用程序(甚至是免費的應用程序)。這是*購買*,所以會有收據。對於Xcode的調試版本,只有在進行應用內購買之後纔會有收據。 – Paulw11

+0

感謝您的回覆@ Paulw11!如果你想提交這個答案,我會接受它。 –

+0

考慮到這些信息沒有在蘋果文檔中列出,有沒有人關心評論下來的投票? –

回答

0

回答Paulw11:

沒有收到,直到用戶進行購買。對於從App Store下載的應用程序(甚至是免費的應用程序)。這是一項購買,所以會有收據。對於Xcode的調試版本,只有在進行應用內購買之後纔會有收據。