在我的iOS应用中,我必须限制用户为每台设备使用iOS应用。为此,我找到了一个解决方案,我们可以使用UUID (Universally Unique Identifier)
UDID (Unique Device Identifier)
生成一个唯一ID来唯一标识设备上的应用。 (这里,我没有使用UUID
,因为如果应用程序使用UDID,Apple拒绝应用程序)。
所以我的问题是,两个设备有任何可能性UUID
。任何想法?
编辑1:
我还有一个疑问,好像我在不同的两个设备上安装了相同的应用,并将其KeyChain
字符串保存到设备iCloud
中。两台设备都拥有相同的iCloud
帐户。现在,在为这两个设备执行KeyChain
同步时,我的设备iCloud Keychain
会被覆盖吗?
编辑2:
我找到了编辑1的答案'是的,通过keychain
,iCloud keychain
将同步到我的另一台设备,并且我将获得相同的设备标识{ {3}}并从下面回答'
对于要与kSecAttrSynchronizable
同步的项目,我需要明确设置SecItem
属性。使用Keychain
API,我们可以在添加钥匙串项时设置此属性。
是否有任何教程如何在loader=[[Loader alloc]initWithNibName:@"Loader" bundle:nil];
[self.view addSubview:loader.view];
loader.view.hidden=YES;
-(void)myMethod
{
[loader.view setHidden:NO];
}
中添加项目(没有第三方库)?
答案 0 :(得分:2)
不,两个设备没有相同的UUID
。我100%肯定。所以请使用identifierForVendor
方法。
但是,当您在设备中重新安装应用程序时,可能会更改UUID
(如果同一供应商没有其他应用程序)。
在iOS设备上安装应用程序(或来自同一供应商的其他应用程序)时,此属性中的值保持不变。当用户从设备中删除所有该供应商的应用程序并随后重新安装其中一个或多个应用程序时,该值会更改。使用Xcode安装测试版本或使用ad-hoc分发在设备上安装应用程序时,该值也会发生变化。因此,如果您的应用程序将此属性的值存储在任何位置,则应优雅地处理标识符更改的情况。
修改强>
您的问题
我还有一个疑问,好像我在不同的两个设备上安装了相同的应用程序,并将其UUID字符串保存到设备KeyChain中。两台设备都拥有相同的iCloud帐户。现在在为这两个设备进行iCloud同步时,我的设备KeyChain会被覆盖吗?
<强> ANSWER 强>
YES。您的钥匙串将被覆盖。因此,对于这两个设备,您具有相同的UUID。
答案 1 :(得分:1)
我以为不是!
对于来自同一设备上运行的同一供应商的应用,此属性的值相同。对于来自不同供应商的同一设备上的应用程序以及不同供应商的不同设备上的应用程序,将返回不同的值。
通常,供应商由App Store提供的数据确定。如果未从应用商店安装应用(例如仍处于开发阶段的企业应用和应用),则会根据应用的捆绑ID计算供应商标识符。假设捆绑包ID采用反向DNS格式。