如何唯一地识别ios设备

ast*_*ter 9 security iphone authentication objective-c ios

在我目前的应用程序中,我必须让用户从不同的iOS设备登录到他们的帐户.目前我正在从令牌值进行用户身份验证.但为了支持多设备登录,我必须找到另一种方法来做到这一点.

因此,我想到了将设备uuid与令牌一起保存以进行身份​​验证+安全性.然后,我知道我不能使用设备uuid,而是我必须使用identifierForVendor哪些可能会或可能不会始终提供用户或设备信息.

那么,任何人都可以建议在ios中为同一个用户帐户实现这种多设备登录功能的更好和正确的方法吗?

Mos*_*erg 8

如您所知,不允许使用设备的UUID,您可以生成自己的UUID并将其存储在设备的UserDefaults上.

使用identifierForVendor不是100%可靠,因为它只适用于iOS6及更高版本,用户可以选择不给你,这使它成为一个糟糕的选择.

这是我之前复制的互联网的一些代码,直到今天仍然使用它,将尝试找到源并稍微更新我的答案.编辑:来源

这将在UserDefaults中为您生成并存储UUID:

- (NSString *)createUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  [[NSUserDefaults standardUserDefaults] setObject:(__bridge NSString *)string forKey:@"UUID"];
  [[NSUSerDefaults standardUserDefaults] synchronize];
  return (__bridge NSString *)string;
}
Run Code Online (Sandbox Code Playgroud)

无论什么时候需要读取生成的UUID:

- (NSString*)UUID
{
    return [[NSUserDefaults standardUserDefaults] ObjectForKey:@"UUID"];
}
Run Code Online (Sandbox Code Playgroud)

现在您可以选择将自己的用户ID附加到该用户身上,这样您就可以知道UUID与哪个用户相关联.

这只是它应该如何工作的粗略草图