使用UDID创建唯一的用户身份

时间:2011-04-08 07:38:37

标签: iphone objective-c ios udid

我正在开发一个与服务器通信以存储和交换数据的iPhone应用程序。由于我希望尽可能简单,我想避免为用户帐户注册(或mybe也使用密码)。是否可以(并允许?)获取iPhone设备的UDID并制作例如。它的MD5哈希值,我转移到服务器并用它进行身份验证?由于此ID是唯一的,因此我可以简单地使用它来登录并从服务器获取用户指定的数据,而无需创建登录数据。

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

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

4 个答案:

答案 0 :(得分:15)

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

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

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

请注意Apple官方文档中的以下内容:

设备的唯一标识符(有时缩写为唯一设备标识符的UDID)是由各种硬件标识符(例如设备序列号)组成的哈希值。保证每个设备都是唯一的。 UDID独立于设备名称。对于使用SIM(用户识别模块)卡的设备,UDID独立于SIM卡。

对于用户安全和隐私,您不得将设备的唯一标识符与用户帐户公开关联。

您可以将UDID与特定于应用程序的用户ID结合使用,以识别服务器上的特定于应用程序的数据。例如,您可以使用设备用户组合ID来控制对已注册产品的访问,或者在中央服务器中存储游戏的高分。但是,如果您正在开发游戏,您可能需要使用Game Center的玩家标识符密钥,如游戏套件编程指南中所述。

重要提示:永远不要仅根据UDID存储用户信息。始终使用UDID和特定于应用程序的用户ID的组合。组合ID可确保如果用户将设备传递给其他用户,则新用户将无权访问原始用户的数据。

答案 1 :(得分:3)

我已经使用UDID来检查设备是否已经有正在运行的订阅。 获取UDID很简单:

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

如果您阅读了App Store规则,则会有一个部分介绍如何让用户创建帐户以将订阅移动到其他设备。 在本节中,Apple明确指出,帐户创建必须是用户必须输入的用户名和密码。用户名不能是电子邮件地址,因为它是个人信息。

如果您的应用程序对数据负担沉重,建议使用可选的用户帐户创建。

AppStore Review指南可以找到:http://developer.apple.com/appstore/resources/approval/guidelines.html

答案 2 :(得分:2)

我猜你的意思是UDID,对吗?也许这就是你找不到类似问题和答案的原因,例如this one:)

答案 3 :(得分:2)

从iOS-6及更高版本开始隐藏

UDID,因此您可以通过以下方式唯一识别设备:

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