我知道在Stack Overflow上已经有很多关于这个问题的提问,但我认为由于苹果公司正提前执行并积极拒绝使用UDID(http://pulse.me/s/7mzKE)的应用程序,我们开发者需要采取积极的方法批判性地讨论这个问题。
所以问题是 - 除了访问其UDID属性之外,什么是好的、稳定的和正确的唯一设备标识的替代方法?
我知道在Stack Overflow上已经有很多关于这个问题的提问,但我认为由于苹果公司正提前执行并积极拒绝使用UDID(http://pulse.me/s/7mzKE)的应用程序,我们开发者需要采取积极的方法批判性地讨论这个问题。
所以问题是 - 除了访问其UDID属性之外,什么是好的、稳定的和正确的唯一设备标识的替代方法?
这取决于您的需求......如果您想要一个简单的设备标识符供您的应用程序使用,那么关于废弃的uniqueIdentifier
方法的文档基本上已经给出了您的答案:
不要使用uniqueIdentifier属性。为创建特定于您的应用程序的唯一标识符,可以调用
CFUUIDCreate
函数创建UUID,并使用NSUserDefaults
类将其写入默认数据库。
CFUUIDCreate
将返回一个唯一的手机标识符,该标识符是特定于您的应用程序的唯一标识符。您需要将其存储在NSUserDefaults
中,因为如果进行后续调用,则会发生更改。对于大多数用途,这就足够了,苹果也提供了足够的警告(iOS 5已经发布超过六个月了,并且开发者文档更长)。
另一个场景是,您需要跨应用程序共享设备标识符(即移动广告网络)。这是一个更复杂的问题,有许多替代选项(还没有保证它们将来会存在:苹果废弃UDID API的主要原因可能是为了阻止跨应用程序的用户跟踪)。
在任何无线通信期间,设备2或3的MAC地址已经被协议规范公开。
虽然我认为这不是一个典型的“如何克服特定技术挑战”的问题,但我同意这非常重要,并且可以在SO上得到很好的讨论(不确定-维基?论坛?)。 我很想知道是否有关于 Flurry如何做到这一点的讨论。