标签 推送 下的文章

iOS版本13.5.1,出现注册通知后didRegisterForRemoteNotificationsWithDeviceToken回调不执行,拿不到deviceToken的现象。
同时注意到控制台输出[] nehelper sent invalid result code [1] for Wi-Fi information request信息,怀疑和该版本下获取wifi详情相关。
切换wifi后立刻收到了deviceToken。
之前的wifi是直接lan口的无线扩展。记录下

- 阅读剩余部分 -

推送token在registerForRemoteNotifications后即可获取到,不论用户允许还是拒绝

token长度是可变的,不要写死

推送token是会随时变化的,即使是app在使用中.当推送token变化时,会重新回调application:didRegisterForRemoteNotificationsWithDeviceToken: 方法,你也可以随时手动调用registerForRemoteNotifications方法来快速拿到已有token

没有网络或连接远程APNS失败时,会调用didFailToRegisterForRemoteNotificationsWithError方法

以下情况APNs会重新生成新的device token

  • 用户在新设备重装app(可见生成规则和appleid有关)
  • 用户从备份还原设备
  • 用户重装系统
  • 其他系统事件

苹果官方出于隐私保护,禁止使用token来区分设备.换句话说,理论上是可以使用token来区分设备的.

用户拒绝推送请求后,再次调用registerForRemoteNotifications方法也不会再弹出窗口,所以,谨慎选择弹窗时机.

deviceToken拿到的为32位的data,可以使用[deviceToken description]查看,格式为<e49c54cc 8a13341d f9f67000 bb621456 43b308ad 777bb2e0 a3b27f0b fa323edc>,可以使用以下方法过滤<>空格

    NSString* token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];

- 阅读剩余部分 -