1,device token到底是什么呢?
结论:
device token是对APNs来说,设备的标识符,与app无关。device token不同于UIDevice的uniqueIdentifier(即UDID),因为出于安全和隐私原因,当设备被擦除后,token发生变化。
2,不同的app的device token相同么?
结论:
同一台设备上,不同的app获得的device token是一样的,device token与app无关。
3,一个设备会产生多个device token么?
结论:
一个设备可能会产生多个device token。
有以下两种情况:
(1)设备擦除过,token变化。
(2)设备同时装过development和distribution的程序,同一个设备在development和distribution两种情况下,收到的device token是不同的。
4,一个device token可能对应多个UDID么?
结论:
一个device token也可能对应多个UDID。
device token的产生:
device token是每次建立TLS连接时,APNS通过每台正常设备唯一的设备证书(unique device certificate),并用令牌密钥(token key)加密生成的。
每台设备独有的设备证书和密钥的来历:
正常的设备刷系统之后,是没有设备证书和密钥的。这就是为什么设备会需要连接到iTunes上进行激活——激活过程中,Apple会分配给每台设备独一无二的设备证书(device certificate)和密钥(key) 。
iPhone OS3.X 使用blacksn0w进行解锁 的过程,是不经过iTunes的,而blacksn0w本身又不生成对应的设备证书(device certificate)和密钥(key) ,因此这样解锁完的iPhone根本不可能与APNS建立任何的TLS链接,不具备Push功能。当多个iPhone的设备证书(device certificate)完全一致时,就存在一定几率使得多个iPhone获得相同的设备令牌(device token)。当这些相同设备令牌(device token)的iPhone上启用了同一个应用程序的Push的时候,就极有可能出现彼此间的Push串发的现象。