2011-04-08 92 views
15

我正在研究与服务器通信以存储和交换数据的iPhone应用程序。由于我想尽可能简化,所以我想避免为用户帐户注册(或者使用密码)。是否有可能(并允许?)获取iPhone设备的UDID并制作例如。它的MD5哈希值,我将其转移到服务器并用它进行验证?由于这个ID是唯一的,我可以简单地使用它来登录并从服务器获取用户指定的数据,而不需要创建登录数据。使用UDID创建唯一的用户标识

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

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

回答

15

是的,这是允许的,但考虑到我所报道的下面,从文档。

您可以检索UDID如下:

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

注意从官方Apple的文档如下:

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

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

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

重要说明:切勿仅根据UDID存储用户信息。始终使用UDID和特定于应用程序的用户标识的组合。组合ID可确保如果用户将设备传递给其他用户,新用户将无法访问原始用户的数据。

+0

好的信息...谢谢 – bryanmac 2011-10-12 04:12:07

+2

'[[UIDevice currentDevice] uniqueIdentifier]'在iOS 5.0中已被弃用,请改用'CFUUIDCreate()'! – 2012-06-06 10:19:33

2

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

+0

耶,你说得对,谢谢;-) – tamasgal 2011-04-08 07:43:58

3

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

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

如果你在App Store的规则读了起来,有一个关于让用户创建账户,订阅移动到另一台设备部分。 在本节中,Apple明确指出,帐户创建必须是用户必须输入的用户名和密码。用户名不能是电子邮件地址,因为它是个人信息。

如果您的应用程序偏重于数据,可选的用户帐户创建将是明智的。

在AppStore审查指南可以发现:http://developer.apple.com/appstore/resources/approval/guidelines.html

+0

可否请你添加一个链接到所提到的订阅规则在苹果。 – 2011-04-12 08:19:12

2

UDID是因为iOS的-6及更高版本,因此您可以唯一地识别设备隐患:

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