【问题标题】:Getting iPhone unique number获取 iPhone 唯一号码
【发布时间】:2013-08-30 00:58:46
【问题描述】:

我需要以编程方式获取 iPhone 唯一号码。我知道如果我尝试获取 iPhone 序列号,苹果会拒绝应用程序。

但可能有一种方法可以获取任何唯一编号的 iPhone,以便服务器可以区分一个设备和另一个设备。

【问题讨论】:

标签: iphone ios ipad udid serial-number


【解决方案1】:

对于每部 iPhone,MAC 地址都是唯一的(iOS 模拟器除外)。您可以获得识别设备的信息。此question 将指导您获取 MAC 地址。但是,iOS7 disallows use of MAC address。因此,对于 iOS 6 或更早版本,您可以使用 MAC 地址;对于即将到来的iOS 7,您可以使用以下方法。

从 iOS 6 开始,Apple 建议使用 Advertising Identifier,可以在 ASIdentifierManager 类中找到。示例代码:

NSUUID *uuid = [ASIdentifierManager advertisingIdentifier];

【讨论】:

  • 这在 iOS 7 上不起作用,设备识别号不能在 iOS 7 中使用。所以没有办法证明未来。
  • @PaulGalavic 用于 iOS 7 代码,我已在更新的答案中添加。
  • 显然,如果您的应用不使用广告,那么将被拒绝,所以这不是一个完整的解决方案:l 看到这个 SO 线程 => stackoverflow.com/questions/21489097
  • @Chris 不正确。我的应用不使用广告(我使用标识符来指定某些设备具有特殊权限),并多次获得 Apple 的批准。
【解决方案2】:

你看过identifierForVendor吗?

https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

苹果将其描述为:

一个字母数字字符串,用于向应用程序的唯一标识设备 供应商。

【讨论】:

  • 请注意,如果用户删除同一供应商的所有应用程序,此数字可能会更改。此外,不同供应商的所有应用程序都不会具有相同的标识符。
  • 这个数字在iOS7中可以吗?
  • 我找不到 Apple 的资源——但我发现有几个网站引用了 iOS7“新特性”文档的说法:“两个低级网络 API 曾经返回MAC 地址现在返回固定值 02:00:00:00:00:00。有问题的 API 是 sysctl (NET_RT_IFLIST) 和 ioctl (SIOCGIFCONF)。使用 MAC 地址值的开发人员应该迁移到标识符,例如 - [UIDevice identifierForVendor]。此更改会影响在 iOS 7 上运行的所有应用程序。"
【解决方案3】:

你应该试试这个来获取你的 iPhone 的 uid:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 2014-06-11
    • 2010-10-10
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多