使用Objective-C查找IMEI号码

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

我经历了几个论坛,包括SO,没有find答案。

有人说苹果不允许开发者看到IMEI号码( SO post ),有人说用UDID ( SO post )。 有人说UDID已被弃用(在iOS 7中)。

我需要知道以下几点:

1.) Apple是否允许开发者检索设备的IMEI号码?

2.)我怎样才能以编程方式做到这一点?

3.)如果苹果不允许开发者收集IMEI号码,他们是否提供设备的其他唯一号码?

4.)一些build议使用Telephony framework 。 如果我这样做,苹果是否会拒绝我的申请?

苹果不允许你再识别一个设备。

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

苹果build议您使用UUID(您将需要存储您的自己), identifierForVendor advertisingIdentifier

苹果现在也拒绝使用advertisingIdentifier应用程序,并没有显示任何广告应用程序。

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

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

但是,iOS现在可以访问两种标识符来识别设备。 他们是:

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

  2. 广告商ID – [UIDevice advertisingIdentifier] 。 这是用于广告目的的唯一标识符。 但是,如果您将其用于非广告目的,则大多数情况下,他们不会在乎。 在大多数情况下,即使用户删除并重新安装应用程序,广告标识符也不会改变。 但是,iOS设置中有一个选项可以重置广告标识符,这将改变它。 这是为了使用户可以select与自己收集的任何广告信息分离。 但是,这是一个非常先进的设置,我怀疑许多用户会这样做,这往往会成为一个问题。

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

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

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

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

如果你想获得IMEI,那么没有办法(在非越狱设备上)。 如果你想确定用户看看这个答案 。 请注意iOS7之前编写的所有文档/答案,因为事情已经改变。

你不能得到IMEI码,但可以使用uuid。 这是独一无二的

在迅速2

  let DeviceID = UIDevice.currentDevice().identifierForVendor!.UUIDString 

并迅速3

  let DeviceID = UIDevice.current.identifierForVendor!.uuidString 

祝你好运。