ios - 如何恢复消耗品In App Purchases?

标签 ios swift in-app-purchase icloud keychain

我想恢复游戏的消耗品应用程序内购买。此游戏仅在应用程序购买中包含消耗品,例如:

  • 1000 个硬币 0.99 美元
  • 3000 个硬币 1.99 美元

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

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

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/

相关文章:

ios - 应用内购买的代码执行

iphone - Apple 是否解决了应用内购买收据验证的安全问题?

arrays - 在 Swift 中按不同的属性值对自定义对象进行排序

swift - 小数字段的正则表达式问题 - Swift

ios - Swift 3 中的 NSFastEnumeration

ios - 沙盒应用内购买,产品请求有效但购买总是失败

android - 我们是否需要在 cocos2dx 中使用 Sprite 作为 2 的幂

iphone - 更改枚举类型值

ios - 如何保存我的 iPhone 应用程序的用户首选项?

objective-c - Xcode 在按钮上滚动