如何恢复耗材在应用内购买?

时间:2016-05-26 17:15:13

标签: ios swift in-app-purchase icloud keychain

我想为游戏恢复耗材In App Purchases。此游戏只有应用程序购买消耗品,如:

  • 1000个硬币0.99美元
  • $ 1.99 for 3000 coins

使用NSUserDefaults来保存硬币是不好的,因为用户可以删除应用程序,当他们重新安装时,他们会丢失硬币。 Apple也有restoreCompletedTransactions方法,但这不适用于消耗品,因此开发人员必须跟踪这一点。

请不要提及使用GameKit(游戏中心)或Web服务器。还有其他解决方案吗?我已经读过iCloudKeychain是另外两种可能的解决方案(不确定这些解决方案是否有用)。

PS:关于SO的答案很多,已经有几年了,而且对我的案子不起作用,所以我再次在这里问。

1 个答案:

答案 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

希望这有帮助