iPhone的MAC地址是唯一的,会改变吗?

3

我希望将iPhone的MAC地址作为我的应用程序的唯一标识符。我想知道它是否会更改,或者每个设备的MAC地址是否都是唯一的。

谢谢


3
因为http://www.tuaw.com/2011/08/19/ios-5-deprecates-udid-as-identifier-for-developers-but-its-not/... - zrzka
请参考此问题获取更多信息。 - Sergey Kalinichenko
使用UDID已经在iOS5中被弃用。 - Martin Berger
6个回答

5
不要使用MAC地址代替UDID,而是使用广告标识符[IDFA]或供应商标识符[IDFV]。 p1. MAC地址不需要全球唯一。 p2. 即使EUI-48或EUI-64格式中的U / L位将地址标识为“通用”,MAC地址也不需要全球唯一。该位实际上意味着OUI已全球注册,并且承担了注册使用该OUI的各个地址的组织的责任。 p3. 实际上,MAC地址并不是全球唯一的。问问任何在网络互操作性实验室工作的人。根据他们从未公开讨论的政策,硬件制造商经常重复使用这些地址。它不能替代UDID。 p4. 操作系统没有义务向非特权应用程序显示实际的硬件MAC地址。目前的版本今天可能正在执行此操作,但是某些将来的版本可能会突然并悄无声息地停止执行此操作。它可以开始在每个设备上返回相同的地址。
不要使用MAC地址代替UDID,而是使用广告标识符[IDFA]或供应商标识符[IDFV]。

2
此外,MAC地址将在iOS7中被弃用。换句话说,它将为所有iOS7客户端返回单个值。 - Khan
1
是的,在iOS 7中,网络接口的MAC地址不再对第三方应用程序可用。具体来说,getifaddrs(3)系统调用[以及通常允许检查网络接口的所有其他编程接口]不返回MAC地址。相反,它返回02:00:00:00:00:00以表示地址未指定且不在通用OUI空间中。 - james woodyatt

1

iOS 5已经弃用UDID API。要获取唯一标识符,您需要使用MAC地址

媒体访问控制地址(MAC地址)是分配给网络接口的唯一标识符。


1

不对设备进行标识有很多原因。

只需为安装创建唯一标识符或允许用户创建帐户即可。任何其他识别设备的方法都可能导致问题。

例如,如果有人出售他们的手机,则下一个用户将看到上一个用户在应用程序中的所有数据。因为您不是识别用户而是设备。


感谢rckoenes的回复。在你之前,我就已经考虑过这个问题了,所以我正在做类似MD5(MAC地址+我的应用程序用户名)的事情。 - IphoneBites
这是一个解决方案,但为什么要添加MAC地址呢?为什么不只创建一个UUID并保存它呢? - rckoenes

0

您可以简单地使用 UDID。 正如其名称所示,它是一个唯一的设备标识符。


1
iOS5 中的弃用怎么办? - Janak Nirmal
是的,我的错,我也需要一个解决方案 :) - Damien Locque

0

我也会尝试使用IMEI,这应该是每部手机都是100%独一无二的。


你不能在iPhone上这样做,这也被Apple禁止了。 - MasterBeta

-1

MAC地址在全世界是唯一的 - 阅读MAC地址。嗯,应该是这样的。有方法可以更改它,但这不是普通用户的任务,所以,是的,你可以使用它。

人们倾向于使用OpenUDID等工具。

去谷歌搜索“iOS deprecated UDID”,你可以整夜阅读一些东西 :) 或者这里有一些摘要


谢谢Robert,我知道UDID已经不再被允许了,所以想使用MD5(MAC地址+我的用户名)或类似的东西。所以我会试一试。 - IphoneBites
请随意使用它(我的意思是MAC),但在我看来,它迟早也会被弃用。在我看来,这比已经被弃用的UDID更敏感。只需考虑您的应用程序并检查您是否真正需要真正的唯一标识符(在一个设备上始终相同),或者您是否可以使用生成的UDID,例如无法在应用程序删除/安装后保留。在我看来,在99.9%的情况下不需要使用MAC。 - zrzka
实际上,我的应用之前使用UDID来识别设备,现在我需要其他的方法来完成这个任务,并且同样具有唯一性。此外,在我的服务器上,我将只存储MAC地址+用户名的MD5字符串,因此苹果在未来不应该会对此产生问题,因为我们仍然没有用户的MAC地址。 - IphoneBites
1
iOS 7 不支持 MAC 地址。 - Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接