我正在开发一个与服务器通信以存储和交换数据的 iPhone 应用程序。因为我想让它尽可能简单,所以我想避免用户帐户的注册(或者 mybe 也使用密码)。是否有可能(并且允许?)获取 iPhone 设备的 UDID 并制作例如。它的 MD5 哈希,我将其传输到服务器并用于身份验证?由于此 ID 是唯一的,我可以简单地使用它登录并从服务器获取用户指定的数据,而无需创建登录数据。
是否允许访问 UDID,对其进行 MD5 哈希并将其存储在数据库中?
第二个问题是:我如何获得 UDID?;-)
我正在开发一个与服务器通信以存储和交换数据的 iPhone 应用程序。因为我想让它尽可能简单,所以我想避免用户帐户的注册(或者 mybe 也使用密码)。是否有可能(并且允许?)获取 iPhone 设备的 UDID 并制作例如。它的 MD5 哈希,我将其传输到服务器并用于身份验证?由于此 ID 是唯一的,我可以简单地使用它登录并从服务器获取用户指定的数据,而无需创建登录数据。
是否允许访问 UDID,对其进行 MD5 哈希并将其存储在数据库中?
第二个问题是:我如何获得 UDID?;-)
是的,这是允许的,但请考虑我在下面从文档中报告的内容。
您可以按如下方式检索 UDID:
NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
请注意 Apple 官方文档中的以下内容:
设备的唯一标识符(有时缩写为 UDID 表示唯一设备标识符)是由各种硬件标识符(如设备序列号)组成的哈希值。保证每个设备都是唯一的。UDID 独立于设备名称。对于使用 SIM(用户身份模块)卡的设备,UDID 独立于 SIM 卡。
为了用户的安全和隐私,您不得公开将设备的唯一标识符与用户帐户相关联。
您可以将 UDID 与特定于应用程序的用户 ID 结合使用,以识别服务器上特定于应用程序的数据。例如,您可以使用设备-用户组合 ID 来控制对注册产品的访问或在中央服务器中存储游戏的高分时。但是,如果您正在开发游戏,您可能希望改用 Game Center 的玩家标识符密钥,如 Game Kit Programming Guide 中所述。
重要提示:切勿仅根据 UDID 存储用户信息。始终使用 UDID 和特定于应用程序的用户 ID 的组合。组合 ID 可确保如果用户将设备传递给另一个用户,新用户将无法访问原始用户的数据。
我使用 UDID 检查设备是否已经有正在运行的订阅。获取 UDID 很简单:
NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
如果您阅读了 App Store 规则,有一节是关于让用户创建一个帐户以将订阅移动到其他设备。在本节中,Apple 明确说明帐户创建必须是用户必须输入的用户名和密码。用户名不能是电子邮件地址,因为它是个人信息。
如果您的应用非常依赖数据,则建议创建可选的用户帐户。
可以找到 AppStore 审查指南:http: //developer.apple.com/appstore/resources/approval/guidelines.html
UDID
自 iOS-6 及更高版本以来隐藏,因此您可以通过以下方式唯一识别设备:
NSString *UDID = [[UIDevice currentDevice] identifierForVendor];