49

我需要找到一种方法来获取iPhone设备的 IMEI 号码。这个问题不是重复的。

我已经浏览了包括 SO 在内的几个论坛,但没有找到答案。

有人说 Apple 不允许开发人员查看IMEI数字(SO post),有人说改为使用UDIDSO post)。有人说不UDID推荐使用(在 iOS 7 中)。

我需要知道以下内容:

1.) 是否Apple允许开发人员检索IMEI设备编号?

2.)我如何以编程方式做到这一点?

3.) 如果 Apple 不允许开发人员收集IMEI号码,他们是否会为设备提供任何其他唯一号码?

4.) 有些人建议使用Telephony framework. 如果我这样做,苹果会拒绝我的申请吗?

4

5 回答 5

75

Apple 不再允许您识别设备。

UDIDMAC 地址和所有其他设备标识符不再被 Apple 访问或允许。

Apple 建议您使用 UUID(您需要存储自己的或).identifierForVendor advertisingIdentifier

苹果现在也拒绝使用advertisingIdentifier和不显示任何广告应用程序的应用程序。

任何获取 IMEI 号码的方法都是使用私有方法,这也是 Apple 不再允许的。因此,您的移动应用程序可能/将被拒绝。

于 2013-11-12T11:00:51.873 回答
16

不幸的是,没有办法获得始终保持不变的设备的唯一标识符。Apple 不再允许您访问 UDID。而在 iOS 7 中,所有设备的 MAC 地址都返回相同的值,因此这也不再有用。

但是,iOS 现在确实允许访问两种可用于识别设备的标识符。他们是:

  1. 供应商 ID - [UIDevice identifierForVendor]。这是一个唯一标识符,对于来自同一供应商或公司的所有应用程序都是相同的。只要用户在其设备上安装了至少一个来自供应商的应用程序,它将保持不变。因此,如果您有 3 个应用程序,供应商 ID 将保持不变,除非用户卸载所有三个应用程序,然后重新安装。如果您只有一个应用程序,这不是很有用 - 如果用户删除它然后重新安装它,它会改变。

  2. 广告商 ID - [UIDevice advertisingIdentifier]。这是用于广告目的的唯一标识符。但是,如果您将其用于非广告目的,他们在大多数情况下不会在意。在大多数情况下,即使用户删除并重新安装应用程序,广告标识符也不会改变。但是,iOS 设置中有一个选项可以重置广告标识符,这将更改它。这意味着用户可以选择将自己与已收集的有关他们的任何广告信息分离。但这是一个非常高级的设置,我怀疑很多用户会经常这样做,这对你来说是个问题。

于 2013-11-12T11:07:53.963 回答
6

您可以使用私有框架获取 IMEI - 请参阅此问题,但您的应用可能会被应用商店拒绝。

如果您想获取一些设备标识符以在您的应用程序中使用,您必须使用 UIDevice 类中定义的 uniqueIdentifier 属性

(适用于 iOS 6.0 及更高版本):

NSString *UDID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
于 2013-11-12T11:03:56.237 回答
1

您可以将 UUID 保存在钥匙串中并将其用作唯一编号。在用户重置 iOS 之前它不会改变。

于 2019-09-26T15:17:30.137 回答
0

如果你想获得 IMEI 是没有办法的(在非越狱设备上)。如果您希望识别用户,请查看此答案。请注意在 iOS7 之前编写的所有文档/答案,因为事情已经发生了变化。

于 2013-11-12T11:04:58.777 回答