使用Objective-C查找IMEI号

时间:2013-11-12 10:50:33

标签: ios objective-c

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

我经历过包括SO在内的几个论坛,但没有找到答案。

有人说Apple不允许开发人员看到IMEI号码(SO post),有人说使用UDID代替(SO post)。有人说UDID已被弃用(在iOS 7中)。

我需要知道以下内容:

1。)Apple是否允许开发人员检索设备的IMEI号码?

2。)我怎么能以编程方式做到这一点?

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

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

5 个答案:

答案 0 :(得分:60)

Apple不允许您再识别设备。

Apple不再可以访问或允许

UDIDMAC address和所有其他设备标识符。

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

Apple现在也拒绝使用advertisingIdentifier且未展示任何广告应用的应用。

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

答案 1 :(得分:13)

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

但是,iOS现在可以访问两种类型的标识符,这些标识符可用于标识设备。他们是:

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

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

答案 2 :(得分:6)

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

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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