Iphone 持久性数据应该存储在iOS中的什么位置?
问题:Iphone 持久性数据应该存储在iOS中的什么位置?,iphone,ios,ipad,persistence,Iphone,Ios,Ipad,Persistence,问题: iOS设备上的哪些地方可以存储少量信息(只有几个字节,在我的情况下只有1位),以便在应用程序从手机上删除并稍后重新安装后,这些信息仍然可用 背景: 我正在开发一个将免费进入appstore的应用程序。该应用程序附带一个免费测试包。此测试包允许在有限的时间内访问我的服务器上数量有限的项目。如果用户需要,他/她可以为更多的项目和更长的时间购买额外的软件包 要使用此软件包,每个用户必须在我的服务器上创建一个帐户。舒尔很容易做到每个客户只能使用一个免费套餐。但我看不出有什么办法可以阻止用户创建数
iOS设备上的哪些地方可以存储少量信息(只有几个字节,在我的情况下只有1位),以便在应用程序从手机上删除并稍后重新安装后,这些信息仍然可用 背景:
我正在开发一个将免费进入appstore的应用程序。该应用程序附带一个免费测试包。此测试包允许在有限的时间内访问我的服务器上数量有限的项目。如果用户需要,他/她可以为更多的项目和更长的时间购买额外的软件包 要使用此软件包,每个用户必须在我的服务器上创建一个帐户。舒尔很容易做到每个客户只能使用一个免费套餐。但我看不出有什么办法可以阻止用户创建数百个额外帐户。所以我想要更多: 我希望,每个用户(每个活着的人)只能使用一个免费软件包,与他/她将创建的帐户数无关 我知道,在用户(活着的人)层面上限制这是不可能的。但在手机上重新发布信息是可以接受的,因为我相信,没有多少人同时使用超过2或3部iPhone。如果一个人在3台不同的iPhone上使用我的应用程序,只是为了能够使用3个不同帐户的3个免费软件包,那么这对我来说是可以接受的 但要做到这一点,我需要将信息存储在手机的某个地方,即与应用程序一起交付的免费软件包已经在使用中。但是,当用户卸载应用程序并稍后重新安装时,应用程序必须仍然可以使用此信息。我不知道从手机上删除应用程序后,在何处存储这些微小的1位信息
你能帮忙吗?iOS中没有这样的地方。如果应用程序被删除,您可以使用钥匙链存储一些数据以保持。但是如果用户清除设备,这些设置将被删除
要做到这一点,目前还没有确定的方法,制作一个免费的应用程序不应该限制在时间上使用,而应该限制在功能上使用。解决这一问题的最简单方法是将iPhone UniqueDeviceId存储在服务器上。然后,下次有人试图从该设备注册帐户时,您可以检查该设备是否已经创建了帐户 苹果从SDK中删除了UDID(折旧),因此另一种选择是使用GitHub上提供的OpenUDID。这将为您提供唯一标识设备的id:
我就是这么做的Hubert Schölnast:
希望这能有所帮助。我自己刚刚找到了答案:存储在钥匙链中的数据将保留在那里,即使该应用被删除,并且可以在重新安装后从同一应用访问。这正是我需要的。
只有完全重新安装固件才能删除条目,但这也会删除每个其他应用程序的其他条目。人们不会经常这样做,我认为仅仅是为了访问我的应用程序的额外免费软件包就太过分了。这是我可以接受的 苹果提供了一个钥匙链访问的示例应用程序。我没有详细阅读这个示例应用程序,但我是舒尔,它包含了我需要的一切:
编辑:
将信息存储为通用密码是解决我的问题的最佳解决方案,但Apple示例应用程序有一个bug。在这个bug中,一个错误的属性被用作存储通用密码的“唯一密钥”。有关更多详细信息以及如何使钥匙链项目真正独一无二,请查看以下问题:您不应该这样做,因为您的身份不是用户而是设备。因此,如果我出售我的iPhone,新主人将无法使用你的应用程序“演示”。但如果你将一个帐户链接到UDID(或OpenUDID),新所有者可能会看到我的数据,这可能会更糟。我知道IOS不推荐使用UDID,但我不知道有类似OpenUDID的东西。这听起来是个好主意,我来看看。@rckoenes:好的,反对者。但我认为,有人将我的应用安装在二手iPhone上的几率非常低,因为我的应用以前在二手iPhone上使用过。但我会想一想,苹果提供了一个API来生成与UDID不同的特定于应用程序的设备标识符(每个设备都是唯一的,但不同的应用程序有不同的访问权限)。如果您不打算与其他开发人员(例如,广告网络)共享此标识符它对你来说应该和UDID一样好。@RanReloated:如果从手机上删除应用程序,然后在以后安装同一应用程序的更新版本,这个API会生成相同的设备标识符吗?我认为苹果不会批准商店中应用程序的“限时功能”。无论您提供什么,它都应该是无时间限制的。@RanReload:应用程序的功能不受时间限制。免费套餐的有效期是有限的。此外,付费包裹将有一个到期日期。另请参阅我对rockoenes答案的评论。该应用程序允许用户存储数据