Flutter中通过Google APIs实现一对一推送及获取对方设备Token
如何获取聊天对象的FCM设备Token以实现一对一消息推送?
FCM设备Token与单个设备绑定,无法直接从本地获取对方的Token,必须通过后端存储+用户关联的方式实现,具体步骤如下:
- 每个用户在首次登录或设备初始化时,调用已有代码获取当前设备的FCM Token:
FirebaseMessaging messaging = FirebaseMessaging.instance; String? token = await messaging.getToken(); - 将获取到的Token与用户的唯一标识(如用户ID、手机号)绑定,上传至你的后端数据库存储。注意:FCM Token可能因应用重装、系统更新、设备重置等情况变更,建议每次应用启动时检查Token是否更新,若有变化立即同步到后端。
- 当用户X向用户Y发送消息时,前端先请求自身后端,传入用户Y的唯一标识;后端从数据库中查询出用户Y对应的FCM Token后,再调用FCM v1接口完成消息推送。
FCM v1接口调用说明
调用接口时需通过Firebase服务账号生成OAuth2令牌进行认证,请求格式示例:
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send Authorization: Bearer <OAuth2令牌> Content-Type: application/json { "message":{ "token":"用户Y的FCM Token", "notification":{ "body":"消息内容", "title":"消息标题" } } }
Firebase v1版本迁移核心要点(翻译自官方文档)
- v1版本要求使用服务账号完成认证,不再支持旧版本的服务器密钥直接调用,需通过Google OAuth2机制获取访问令牌。
- 消息结构相比旧版本更规范,支持数据消息、通知消息的分离配置等更多自定义选项。
- FCM本身不提供用户与Token的映射存储功能,开发者需自行维护用户与对应设备Token的关联关系。
内容的提问来源于stack exchange,提问作者wahyu
相关产品推荐
相关产品推荐

