我正在开发一款应用程序,该应用程序具有许多应用程序商店购买项目,可以启用某些功能。
购买每件商品后,我需要记住它(当然)。我还想在iCloud中保留此信息,以防应用程序被删除或安装在其他设备上。
要使用的最佳数据结构是什么?
可以使用用户默认数据库吗?
重要的是,用户无权更改这些值并自行启用付费功能。
答案 0 :(得分:0)
可以使用用户默认数据库吗?
可以,但这不是最好的主意,因为
重要的是,用户无权更改这些值并自行启用付费功能。
和NSUserDefaults
将其内容存储为二进制或纯文本属性列表。在越狱设备上轻松更换。 (也可以通过修改iTunes备份文件在非越狱的上更改。)
你可以做的是将它们存储在钥匙串中,虽然钥匙链并非真的为此设计(并且它也可以使用Ptoomey3的真棒Kaychain-Dumper工具转储到越狱设备上),或者更好地将它存储在您的服务器并让您的服务器检查用户购买的内容。
当然,如果不仅是服务器进行检查,那么例如您不仅根据购买发送或不发送内容,而且还使用此检查在您的应用程序中执行操作,然后它也可以被黑客攻击(google“MobileSubstrate作弊DoodleJump”就是一个很好的例子)。
总而言之:没有完全安全的系统。
答案 1 :(得分:0)
我使用KeychainItemWrapper
类在钥匙串中存储标志。好的是,到目前为止,钥匙串在删除应用程序后仍然存在。如果用户然后在同一设备上重新安装相同的应用程序,则钥匙串数据仍然存在。
无需使用iCloud。如果用户在其他设备上安装您的应用,您只需在应用中提供“恢复购买”按钮。然后,您调用Store Kit API以恢复现有购买。 “应用程序内购买编程指南”介绍了如何执行此操作。
即使钥匙串中的标志丢失,此功能也允许用户恢复购买。