FCM推送通知注册是仅需一次还是每次打开应用都要执行?
正确实现方式:每次应用启动时都调用注册逻辑
仅单次注册的方式会出现令牌过期后无法及时更新的问题,大概率会出现推送丢失的情况。
核心理由
- FCM令牌本身存在过期更新机制,以下场景都会触发令牌变更:
- 用户卸载重装应用、清除应用数据
- FCM服务端主动回收旧令牌降低安全风险
- 系统版本更新、应用大版本更新
- 用户在系统设置中开关推送权限
- Capacitor的
PushNotifications.register()本身是幂等操作,重复调用不会产生额外副作用:如果当前已有有效令牌,会直接触发registration事件返回现有令牌,不会发起重复的注册请求。
可直接落地的实现步骤
- 应用冷启动/激活、且用户已同意推送权限时,主动调用
PushNotifications.register() - 全局持久化监听
registration事件,每次拿到返回的令牌后,和本地缓存的历史令牌做比对:- 若本地无缓存/两个令牌不一致,将新令牌上传至业务后端绑定用户身份,同时更新本地缓存
- 若两个令牌完全一致,无需执行额外操作
- 同步监听
registrationError事件,处理权限拒绝、网络异常等注册失败的场景
内容的提问来源于stack exchange,提问作者RafaelJan
相关产品推荐
相关产品推荐

