我正在為我的一個跨平臺(iOS macOS)的應用程式實作應用內購買。我實作非消費性IAP的方法是,在購買后為特定的密鑰在鑰匙串中保存一個標志。(例如,鍵值true為com.app.prodctId),并在運行時檢查該標志是否存在以及該值是什么。然而,這似乎是非常不安全的,因為一些用戶可能只是在鑰匙串中添加了特定值的鑰匙,從而在沒有購買的情況下獲得了鎖定的功能。這方面的解決方案是在保存標志之前對其進行加密(或使用鹽對資料進行散列),但我需要為每個 iCloud 帳戶配備一個單獨的密鑰(因此用戶可以在其 iCloud 帳戶的所有設備上享受產品),而我并不確定這可以是什么。
是否有任何東西可以在每個 iCloud 帳戶中獲取,以便我可以將其作為哈希值的加密密鑰/鹽?或者是否有更好的方法來管理非消耗性的應用內購買?
uj5u.com熱心網友回復:
對于每個下載您的應用的用戶,蘋果都會創建一個包含一些元資訊的收據(用戶下載了哪個應用版本,什么時候,等等)。
當您的應用程式提供應用內購買時,這些也會被保存在收據中。由于該收據會自動與用戶的所有設備同步,因此它是檢查用戶購買了什么并相應地解鎖其所有設備上的內容的正確選擇。
請參閱此處,了解 Apple 關于收據驗證技術的文章。 如果您選擇本地(設備上)收據驗證,我建議您使用TPInAppReceipt 庫來對收據進行編碼。這可以省去很多麻煩。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/326087.html
標籤:
