APNs、FCM/GCM令牌分配规则及Web应用令牌指定方式问询
刚好对这两块推送服务的令牌规则挺熟的,给你掰扯清楚:
APNs(Apple推送通知服务)的令牌分配规则
- 直接说结论:是为「用户-应用-设备」的唯一组合生成令牌。拿你举的例子,用户X用iPhone7安装Facebook时,这个令牌专门对应「X的iPhone7设备 + Facebook应用」——哪怕用户X换个iPhone14装Facebook,令牌会完全不同;就算是同一个iPhone7上装Instagram(同属Meta但不同应用),令牌也会是独立的。
- 补充细节:APNs的令牌会和设备硬件标识、应用的Bundle ID(苹果给每个应用分配的唯一标识)绑定,而且如果用户卸载重装应用、设备系统大版本更新,或者应用重新签名,这个令牌都可能被刷新,所以开发者需要监听令牌变化的事件,及时更新后台存储的令牌。
FCM/GCM(谷歌云消息服务)的令牌分配规则
FCM是GCM的升级版,核心规则基本一致:
- 核心逻辑是基于「应用-设备」的组合生成令牌,和用户账号本身没有直接绑定。比如用户X用小米13装Twitter,生成的令牌对应「小米13设备 + Twitter应用」——哪怕用户X在这个设备上切换不同的Google账号,只要Twitter应用没卸载重装,令牌通常不会改变;但如果换个华为手机装Twitter,或者同一个小米13上装TikTok,令牌就会完全不同。
- 特殊说明:如果你的应用需要关联用户账号,那是开发者自己在后台把FCM令牌和用户ID绑定的,FCM本身的令牌不包含用户身份信息。另外,当应用卸载重装、设备恢复出厂设置,或者应用的签名密钥变化时,令牌会重新生成,同样需要开发者监听更新事件。
Web应用中的令牌指定方式
Web端推送主要依赖FCM的Web推送能力,步骤大概是这样:
- 首先得让用户授权通知权限,浏览器会弹出请求,用户允许后才能继续后续操作。
- 你的Web应用需要注册Service Worker,这是Web推送的基础组件,负责在后台接收推送消息。
- 通过FCM的JavaScript SDK调用
messaging.getToken()方法,就能获取到Web端的推送令牌。这个令牌是**「浏览器实例-Web应用」**的组合标识——比如用户用Chrome浏览器登录你的Web应用,生成的令牌只对应这个Chrome里的你的应用;换Firefox或者换另一台电脑的Chrome,令牌都会不同。 - 拿到令牌后,你需要把它传到自己的后台服务器存储,后续给这个用户发推送时,就用这个令牌作为目标标识。
内容的提问来源于stack exchange,提问作者Mohammad Lashgarbolouk
相关产品推荐
相关产品推荐

