我正在尝试唯一识别iPhone / iPad移动设备以保存用户数据。
我发现了一些,包括
[NSString *UUID = [[NSUUID UUID] UUIDString];
[UIDevice currentDevice].identifierForVendor.UUIDString;
或从
获取设备令牌- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{ ... }
但问题在于
由于app store拒绝使用uniqueIdentifer,我的问题是: 有什么方法可以在任何应用程序更新,删除,重新安装中唯一地识别设备吗?
答案 0 :(得分:2)
使用SSkeychain永久存储唯一密钥。将来自this github example的sskeychain文件夹中的4个文件带入您的项目
然后使用此代码获取唯一标识符。
-(NSString *)getUniqueDeviceIdentifierAsString
{
NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *strApplicationUUID = [SSKeychain passwordForService:appName account:@"incoding"];
if (strApplicationUUID == nil)
{
strApplicationUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[SSKeychain setPassword:strApplicationUUID forService:appName account:@"incoding"];
}
return strApplicationUUID;
}
删除并重新安装应用后,此标识符不会更改。我已经使用过它,它对我来说非常适合。
答案 1 :(得分:1)
我能想到的最接近的事情是生成你自己的UUID并将其存储在device keychain中。
通过这样做,它将在应用程序删除/重新安装后继续存在,如果用户启用了iCloud Keychain,它还应该能够在设备恢复后继续使用。
为了简化操作,您可以在许多可用的开源(one is here)中使用钥匙串包装。
答案 2 :(得分:1)
答案 3 :(得分:0)
一种创造性的方法可能是(ab)使用wifi端口的MAC address。