2013-08-27 38 views
1

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

但是可能有一种方法可以获得任意数量的iPhone,因此服务器可以区分一个设备。

+0

什么样的唯一的号码?一个可以识别每个设备的号码?使用MAC地址。 – Raptor

+0

在这里看到这个问题的替代: http://stackoverflow.com/questions/15939819/udid-replacement – dna2

+0

你应该永远不会[识别设备](http://triplesoftware.nl/2012/03/uniqueidentifier - 不赞成是一件好事/),但你应该确定用户。另外从iOS 7开始,您根本无法识别设备。 – rckoenes

回答

3

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

自iOS 6以来,Apple建议使用广告标识,可在ASIdentifierManager类中找到。示例代码:

NSUUID *uuid = [ASIdentifierManager advertisingIdentifier]; 
+0

这不适用于iOS 7,不能在iOS 7中使用设备识别号码。所以没有办法做出这个未来的证明。 – rckoenes

+0

@PaulGalavic请参阅参考链接,不要在此重复代码。 – Raptor

+0

@rckoenes已经在回答中提到 – Raptor

1

你看过identifierForVendor

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

苹果描述为:

唯一标识设备到应用的 供应商的字母数字字符串。

+1

请注意,如果用户移除同一供应商的所有应用程序,则可以更改此号码。同样,不同厂商的所有应用程序都不会有相同的标识符。 – rckoenes

+0

这个数字在iOS7中可以吗? –

+0

我无法找到Apple的源代码 - 但我发现有几个网站引用了iOS7的“新增功能”文档,内容如下:“现在用于返回MAC地址的两个低级网络API返回固定值为02:00:00:00:00:00所讨论的API是sysctl(NET_RT_IFLIST)和ioctl(SIOCGIFCONF),使用MAC地址值的开发人员应该迁移到诸如 - [UIDevice identifierForVendor]之类的标识符。影响iOS 7上运行的所有应用程序。“ – James

0

你应该试试这个让你的iPhone的UID:

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