ios9以前的系统里面:一个设备的token是唯一的。除了升级系统等少量情况,基本不变。 而且在token变了以后,老的token,就被认为是无效了。 苹果不会对这部分无效的token推送。
ios9的系统:一个app每一次重新安装多会产生新的token。 而且老的token不会无效,还可以正常推送。 这个问题,我们在ios9刚发布的时候,我们就向苹果反馈过这个问题,也得到过他们反馈,应该是个bug。但是他们一直也没有修复。 所以这个重担就落在我们头上。
处理办法:
我们目前是根据OpenUDID(实时过滤)和IDFA(按天过滤)双重过滤(部分app没有采集IDFA,就只按按照OpenUDID),对于同一个OpenUDID或者IDFA只采用最新的devietoken做为设备的有效devicetoken,老的我们这边认为是非法的。 由于某些原因OpenUDID也可能会变,所以就会有极少量的设备可能会存在发送两次以上的情况(尤其是测试设备)。