使用UDID创build唯一的用户标识

我正在开发一个iPhone应用程序,与服务器通信以存储和交换数据。 由于我想使它尽可能简单,我想避免注册(或mybe也是使用密码)的用户帐户。 是否有可能(并允许?)获得iPhone设备的UDID,并使例如。 它的MD5哈希,我转移到服务器,并用它来validation? 由于这个ID是唯一的,我可以简单地使用它来login并从服务器获取用户指定的数据,而不需要创buildlogin数据。

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

第二个问题是:我如何获得UDID? 😉

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

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

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

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

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

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

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

重要信息:切勿仅根据UDID存储用户信息。 始终使用UDID和特定于应用程序的用户标识的组合。 组合ID确保了如果用户将设备传递给另一个用户,则新用户将不能访问原始用户的数据。

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

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

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

如果您的应用程序偏重于数据,则可选的用户帐户创build将是可取的。

AppStore评审指南可以通过以下链接find: http : //developer.apple.com/appstore/resources/approval/guidelines.html

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

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

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