自定义Rocket.chat应用推送通知功能运行异常问题咨询
Rocket.Chat 安卓后台推送异常排查解决方案
1. 修复安卓通知渠道ID报错
安卓8.0及以上版本必须配置通知渠道才能正常展示后台推送,处理步骤:
- 进入Firebase对应项目的「云消息传递」设置页,创建安卓通知渠道,记录你填写的渠道ID
- 登录Rocket.Chat管理后台,进入
设置-推送-Google Cloud Messaging (GCM)模块,找到Android Channel ID配置项,填入上述渠道ID,保存后重启服务 - 若你使用的Rocket.Chat版本无该配置项,可直接修改
app/push/server/gcm.js代码,在推送请求的payload中补充android_channel_id字段,值和你创建的渠道ID保持一致
2. 调整推送字段结构
你怀疑的data/notification字段问题是核心诱因,安卓系统推送处理规则如下:
- 仅包含
data字段的推送,需要应用处于前台或临时被唤醒才能处理,后台进程被系统限制时无法触发通知 - 包含
notification字段的推送,会被系统直接接管展示,不需要唤醒应用
修改方案: - 编辑
app/push/server/gcm.js文件,调整推送payload构造逻辑 - 将原本仅存入
data字段的推送标题、内容、图标等参数,同步写入notification字段 - 示例修改逻辑:补充
payload.notification = {title: pushTitle, body: pushContent, icon: 'notification_icon_name'}配置 - 修改完成后重启Rocket.Chat服务生效
3. 调高推送优先级
默认推送优先级不足会导致后台被系统限流,修改gcm.js中的推送请求参数:
- 补充
priority: 'high'配置,高优先级推送可绕过安卓后台进程限制 - 可选补充
time_to_live: 86400配置,设置推送的有效存活时间
4. 功能验证
修改完成后按以下步骤测试:
- 将应用完全退到后台,清理最近任务列表
- 用其他账号向测试账号发送消息,确认通知栏正常弹出推送提醒
- 查看Rocket.Chat服务端日志,确认无新增报错,推送发送状态正常
- 若仍存在异常,可对比Rocket.Chat生成的推送payload和你手动调用Firebase API发送的payload结构,逐一对齐参数即可解决
内容的提问来源于stack exchange,提问作者Евгений Юрченко
相关产品推荐
相关产品推荐

