我想为游戏恢复耗材In App Purchases。此游戏只有应用程序购买消耗品,如:
使用NSUserDefaults
来保存硬币是不好的,因为用户可以删除应用程序,当他们重新安装时,他们会丢失硬币。 Apple也有restoreCompletedTransactions
方法,但这不适用于消耗品,因此开发人员必须跟踪这一点。
请不要提及使用GameKit
(游戏中心)或Web服务器。还有其他解决方案吗?我已经读过iCloud
和Keychain
是另外两种可能的解决方案(不确定这些解决方案是否有用)。
答案 0 :(得分:1)
Keychain和iCloud正是您所关注的。卸载应用程序时也不会删除钥匙串数据。
GitHub上有一个帮助钥匙串的好帮手,这使得使用它变得轻而易举。
https://github.com/jrendel/SwiftKeychainWrapper
关于数据存储的一般阅读
How secure is NSUserDefaults on iOS 8,9?
要将数据存储在iCloud中,您应该使用密钥值存储来存储小数据。
我使用单例类来处理所有这些。有一个简单的例子,请查看我发布的答案
SpriteKit: Why does it wait one round for the score to update? (Swift)
基于这篇伟大的文章
https://www.raywenderlich.com/63235/how-to-save-your-game-data-tutorial-part-1-of-2
希望这有帮助