You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

firebase Realtime Database在线计数异常下聊天app push notification实现咨询

Firebase 在线计数异常解决方案

使用Firebase Realtime Database自带的*存在检测(Presence)*能力即可解决客户端异常断开的计数不准问题,该能力由服务端自动监听连接状态,不需要依赖客户端主动上报操作,具体实现逻辑如下:

  • 废弃原有的单整数字段online,新增节点online_users,每个进入聊天界面的用户在该节点下创建独立子节点,key使用用户唯一UID,value可存进入时间戳或布尔值true
  • 进入聊天界面时,先为当前用户的子节点注册断开自动删除操作:firebase.database().ref('online_users/' + currentUid).onDisconnect().remove(),该规则会预先提交到Firebase服务端,只要服务端检测到客户端断开连接(杀应用、断网、进程被清理等场景),就会自动删除对应子节点,无需客户端触发
  • 监听online_users节点的子节点数量,该数值即为当前活跃在聊天界面的人数,直接替代原online字段的逻辑即可
  • 正常点击内置返回按钮退出聊天界面时,主动删除当前用户的online_users下对应子节点即可,服务端会自动取消预先注册的断开删除规则
  • 如果是一对一聊天场景,可直接判断目标用户的online_users/{targetUid}节点是否存在,比统计总人数的准确性更高,可避免多用户场景的计数偏差

Push Notification 通用工作原理

推送通知依赖厂商/第三方推送服务商维持的系统级长连接通道实现,不需要应用在后台存活也能接收通知,通用流程如下:

  1. 应用首次启动时向推送服务商(iOS为APNs,安卓为各厂商推送服务、FCM等)注册,获取当前设备的唯一推送令牌(Token),应用将该Token上传到业务服务端,和用户ID绑定存储
  2. 业务服务端需要下发通知时,将通知内容、目标用户对应的推送Token打包为请求,发送到推送服务商的服务端接口
  3. 推送服务商校验Token有效性后,通过自身和目标设备维持的系统级长连接,将通知内容下发到设备
  4. 设备系统收到通知后,不需要启动对应应用,直接在系统通知栏展示内容,用户点击通知后才会唤起对应应用执行后续逻辑

补充说明:安卓设备如果用户关闭了应用的通知权限、或者将应用加入后台活跃限制名单,可能会无法收到推送;iOS设备如果用户关闭了应用的通知权限,也会收不到推送。

内容的提问来源于stack exchange,提问作者Sawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:54:03