我正在使用应用内购买构建iPhone应用。我正在使用“内置”模型,其中附加内容在验证收据后解锁。我的交易没有问题......但是在用户设备上保存购买记录的最佳方法是什么?
Apple指南建议使用NSUserDefaults存储该信息。这个建议的问题是任何拥有iPhone Explorer免费副本的人都可以非常轻松地进入应用程序,编辑plist,并在不实际支付的情况下解锁完整版本。
有人可以推荐更安全的解决方案吗?
答案 0 :(得分:6)
标准免责声明:这里没有“真正的解决方案”可以打败所有盗版 - 免费解锁东西只有不同程度的难度。目前的传统观点:担心知道如何编辑app plists的少数人可能并不重要。
反正:
~
或/tmp
之外,它位于/Library/Caches
以下的任何位置。您可以使用通常隐藏在普通目录列表中的句点前缀文件名。大部分可能都是矫枉过正,请参见顶部的免责声明。 :)
答案 1 :(得分:0)
我认为最安全的方法是将此信息存储在您的服务器上,并在应用程序启动期间加载此信息。 plist文件可以很容易地修改(它们在一天结束时是纯文本文件)
但是,如果您没有后端,仅为此目的设置后端将是矫枉过正。在这种情况下,我可以建议用plist文件做一些聪明的事情。最重要的是,拥有一个唯一的键值对,根据用户的ID授予访问权限(请记住,如果同一用户使用多个设备,设备ID将会中断)。该值将根据散列算法生成。 (例如,value = hash(userID))由于'黑客'不会知道您的算法,因此他们知道正确值(表示购买的价值)的唯一方法是购买您的应用。需要注意的是,如果您使用此订阅,黑客可能会订阅第一个月,获得正确的值,然后取消订阅并保持其正确的值。
有意义吗?