保存用户的硬币计数

时间:2015-10-26 21:53:38

标签: cocoa encryption persistence

虽然我的应用程序不是游戏,但基于硬币的游戏可以作为一个很好的类比。

在这样的游戏中,用户可以通过游戏玩法或购买IAP获得一定数量的硬币。主要问题是安全地存储用户在当地拥有多少硬币。

我知道还有其他问题,例如this。这个答案基本上说,试图安全地保存数据是没有用的;只是处理用户可以编辑数据的事实。

我宁愿不将数据公开留给用户进行更改(如果他们可以编辑数据,他们为什么要购买IAP?)。我查看了Keychain,它有一个用于查看和编辑数据的公共界面,以及NSUserDefaults,它保存到一个可以轻松更改的Plist。

对我来说是否有更好的选择,或者我是否应该尝试(如上面的答案所示)?

修改:该应用实际上是一个具有有限数量令牌的开发人员工具。由于用户都具备技术技能,其中大部分(我认为)都有足够的知识来查找和更改Plist文件或Keychain数据。

1 个答案:

答案 0 :(得分:0)

这个解决方案非常适合我。试试这个:https://github.com/nielsmouthaan/SecureNSUserDefaults。它会在您的UserDefaults文件中存储加密的bool / string / float / integer。希望这是你想要的。确保下载CocoaSecurity并将其添加到项目中。 CocoaSecurity是SecureNSUSerDefaults的必需元素,因此您无需将其导入任何文件。您还必须下载Base64,这是CocoaSecurity的必需元素。您还需要将Base64添加到项目中,但不需要将其导入任何文件。

<强> USAGE

将头文件导入要使用加密方法的任何位置。

#import <SecureNSUserDefaults/NSUserDefaults+SecureAdditions.h>

然后,在您的awakeFromNib方法中设置加密密钥

[[NSUserDefaults standardUserDefaults] setSecret:@"your_secret_goes_here"];

我建议生成随机数字和字母串。 然后,您必须将信息存储在UserDefaults文件中。

[[NSUserDefaults standardUserDefaults]
    setSecretObject:@"your_secret_object"
    forKey:@"the_key_your_object_will be_stored_under"];

要检索字符串,请使用以下方法:

NSString *retrievedData = [[NSUserDefaults standardUserDefaults]     
    secretStringForKey:@"the_key_your_object_will be_stored_under"];

我希望这有帮助!