是否有可能创建设备特定的.plist文件-iOS

是否有可能创建设备特定的.plist文件-iOS

问题描述:

我正在将一些数据存储在plist文件中......并且我意识到它可以共享。有没有一种方法可以使.plist文件设备特定?也许UDID或什么?任何想法将不胜感激..是否有可能创建设备特定的.plist文件-iOS

+0

您是否在运行时创建了plist文件? – 2013-05-07 06:28:35

+0

是的,我是在购买第一款产品之后。 – user123 2013-05-07 06:35:22

如果你不想让别人看到你的.plist文件的内容,你可以使用encryption algorithms提供的iOS加密它们。 其他简单的方法是将您的敏感数据存储在钥匙串中,或NSUserDefaults而不写入文件,这将是非常设备特定的。祝你好运!

+0

感谢您的建议。我正在存储购买产品的信息。即使我对它进行加密,它也不会有太大的区别,因为解密算法在我的应用程序中是相同的。有人可以买东西,很容易分享plist文件..我不太确定钥匙扣是否适合这个目的,但是我肯定会检查出来的.. – user123 2013-05-07 06:32:41

+0

是的,那么在你的情况下,'NSUserDefaults'或钥匙串是走。 – 2013-05-07 09:43:35

+0

而且,对于每个设备,您可以使用不同的密钥进行加密,例如,不推荐使用的UDID或唯一字符串,例如UUID。 – 2013-05-07 09:45:29

UDID是从5月1日2013年

禁止从iOS 6中开始有一个叫identifierForVendor另一种方法。您可以使用此方法在每个iOS设备中为您的应用创建唯一标识符。

你可以把它想:

NSString *idForApp = [[UIDevice currentDevice] identifierForVendor]; 

保存plist使用idForApp。这将是独一无二的。

identifierForVendor

的字母数字字符串唯一标识的装置,以应用程序的供应商 。 (只读)

@property(nonatomic, readonly, retain) NSUUID *identifierForVendor; 

讨论

该属性的值是该来自相同的设备上运行的 同一供应商的应用程序是相同的。对于来自不同供应商的同一设备上的应用以及不同供应商的不同设备上的应用,返回不同值 。

如果应用程序在 后台运行,在用户在设备重新启动后第一次解锁设备 之前,此属性的值可能为零。如果该值为零,请稍后再等待并获得值 。

在iOS设备上安装应用程序(或来自同一供应商的另一个 应用程序)时,此属性中的值保持不变。当用户从 设备中删除所有供应商的应用程序并随后重新安装其中的一个或多个应用程序时,值 会更改。因此,如果您的应用程序 在任何地方存储此属性的值,您应该优雅地处理标识符更改的情况。

状况

Available in iOS 6.0 and later. 

宣布的UIDevice。^ h

参考:


您也可以使用NSUUID类的UUID类方法来创建一个唯一的ID。

NSUUID - UUID

+0

谢谢.. identifierForVendor和uniqueIdentifier看起来像返回不同的结果。如果有人在iOS 5上购买了某些东西,然后他将操作系统升级到6+,那么这将不起作用。我对吗? – user123 2013-05-07 07:33:23

+0

@ user968173是的。在iOS 6中,uniqueIdentifier不起作用。因此对于iOS 5,使用uniqueIdentifier并将值存储在NSUserDefaults中。或者简单地使用NSUUID类来创建唯一标识符并将其保存在数据库中。 – 2013-05-07 08:59:40