我想恢复游戏的消耗品应用程序内购买。此游戏仅在应用程序购买中包含消耗品,例如:
- 1000 个硬币 0.99 美元
- 3000 个硬币 1.99 美元
使用 NSUserDefaults
来保存硬币并不好,因为用户可以删除应用程序,当他们重新安装时,他们会丢失硬币。 Apple 也有一个 restoreCompletedTransactions
方法,但这不适用于消耗品,因此开发人员必须跟踪它。
请不要提及使用 GameKit
(游戏中心)或 Web 服务器。还有其他解决方案吗?我读过 iCloud
和 Keychain
是另外两种可能的解决方案(不确定它们是否适用于此)。
PS:关于 SO 的许多答案都是几年前的,对我的情况不起作用,所以我在这里再次提问。
最佳答案
Keychain 和 iCloud 就是您所关注的。卸载应用程序时,钥匙串(keychain)数据也不会被删除。
GitHub上有keychain的好 helper ,使用起来很轻松。
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
希望对你有帮助
关于ios - 如何恢复消耗品In App Purchases?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467256/