使用UDID创建独特的用户身份

15

我正在开发一款iPhone应用程序,它与服务器通信以存储和交换数据。由于我希望让它尽可能简单,所以我想避免为用户帐户注册(或者也许是使用密码)。是否可以(并且被允许)获取iPhone设备的UDID并对其进行MD5哈希,然后将其传输到服务器并用于身份验证?由于此ID是唯一的,因此我可以简单地使用它登录并从服务器获取用户指定的数据,而无需创建登录数据。

是否允许访问UDID,并对其进行MD5哈希并存储在数据库中?

第二个问题是:如何获取UDID? ;-)


我猜你是指UDID,对吗?也许这就是为什么你找不到类似的问题和答案,比如这个 :) - phi
3个回答

15

是的,允许这样做,但请考虑下面我从文档中报告的内容。

您可以按以下方式检索UDID:

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
注意以下来自官方苹果文档的内容:
设备的唯一标识符(有时缩写为UDID表示唯一设备标识符)是由诸如设备序列号之类的各种硬件标识符组成的哈希值。它保证对于每个设备都是唯一的。 UDID独立于设备名称。对于使用SIM(用户身份模块)卡的设备,UDID独立于SIM卡。
出于用户安全和隐私考虑,您不得公开将设备的唯一标识符与用户帐户关联起来。
您可以使用UDID与特定于应用程序的用户ID相结合,以识别服务器上的特定于应用程序的数据。例如,您可以使用设备-用户组合ID来控制对注册产品的访问或在中央服务器上存储游戏的高分数。但是,如果您正在开发游戏,则可以根据《Game Kit编程指南》中所述,改为使用Game Center的player identifier密钥。
重要提示:永远不要仅基于UDID存储用户信息。始终使用UDID和特定于应用程序的用户ID的组合ID。组合ID确保如果用户将设备转移给另一个用户,则新用户将无法访问原始用户的数据。

2
在iOS 5.0中,[[UIDevice currentDevice] uniqueIdentifier]已被弃用,请使用CFUUIDCreate()代替! - d.ennis

3

我曾使用UDID来检查设备是否已经运行了订阅服务。获取UDID很容易:

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];

如果你阅读了App Store规则,会发现有一部分关于让用户创建帐户以将订阅移动到其他设备的内容。在这个部分中,苹果明确表示帐户创建必须是用户输入的用户名和密码,用户名不能是电子邮件地址,因为它是个人信息。
如果你的应用程序依赖于数据,建议提供一个可选的用户帐户创建功能。
AppStore审查指南可以在以下链接找到:http://developer.apple.com/appstore/resources/approval/guidelines.html

请问您能否在提到的苹果订阅规则中添加一个链接? - Kai Huppmann

2

UDID在iOS-6及更高版本中已经隐藏,因此您可以通过以下方式唯一标识设备:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接