iOS 7 之前,苹果对于一个设备上的多个App生成相同的Devicetoken,iOS7及之后,对同一设备上的多个App生成不同Devicetoken。
虽说Devicetoken也不是一定可靠,因为它可能在某个你不知道的时候发生变化,但是可以设置一个对策,自从第一次在didRegisterForRemoteNotificationsWithDeviceToken中获取到devicetoken后将其存储起来,等之后devicetoken发生变化就在同一个方法中将新旧devicetoken一起发送给自家服务器来替换。但是问题出现了,当第一次安装该App时选择了拒绝使用推送的话,之后就算你跑到通知里面打开接受推送选项,你也接受不到任何推送,因为devicetoken只有在第一次安装的时候才能发送到苹果服务器注册。所以呢,我们使用新对策。
UDID貌似在2012年的样子就被禁止了,因此新对策是自己生成UUID,尽量保持其不变化。好处是,当用户安装本公司多个App的时候,使用同一个UUID,方便本公司统计该用户通过本公司哪些应用,去掉重复的用户,以及可以本公司多App之间跨来跨去,因为使用同一个账号系统。
说到使用同一个账号系统,这次不得不提到Keychain。只要你将账号密码存入keychain,即使你删除了该App,等你下次重新安装的时候,这个keychain的信息你也同样可以获取。
三方库:iOS 密码加密存储 SFHFKeychainUtils