欢迎到专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。
你好,关于 uni-push 2.0 集成 Google FCM 离线推送概率低的问题,这是一个比较典型的场景,通常不是代码逻辑问题,而是由网络环境、设备状态和推送策略共同导致的。
根据你的描述和知识库中的信息,可以按以下思路排查:
1. Google 服务连接稳定性
FCM 推送要求设备必须能稳定连接 Google 移动服务(GMS)。即使你使用港版三星和香港 SIM 卡,如果网络环境有波动、或设备与 Google 服务器的连接不稳定,就可能导致消息接收延迟或丢失。
请确保设备能始终正常访问 Google 服务,网络波动是离线消息丢失的首要怀疑对象。
2. 应用状态与推送策略
你遇到的“偶尔收得到”现象,在知识库的 ISSUE 系统中有完全一致的案例:push 2.0 FMC 推送 异常。
该案例的复现步骤是:第一条离线消息成功送达后,应用被唤醒,设备状态变为“在线”,导致后续消息被当成透传消息下发,而非通知栏消息,从而“收不到”。针对此问题,DCloud 官方人员给出了明确的解决方案:
试试看,根据文档设置 strategy 的值为 2:表示该消息只通过厂商通道策略下发,不考虑设备是否在线。
也就是说,你可以在服务端调用 sendMessage 时,在 settings 里配置 strategy 为 {"default": 2},强制所有消息都走 FCM 厂商通道,这样可以避免因设备状态切换而导致的消息下发方式改变。
3. 消息有效期(TTL)设置
检查一下发送离线消息时 settings 中的 ttl 参数。这个值代表消息的离线存活时间,单位是毫秒。如果设置过短(例如只有几秒),当设备网络刚好在此时间段内不可达时,消息就会被丢弃。建议根据业务需求,将其设置为一个合理的时长,比如 1 小时(3600000 毫秒)。
4. FCM 配置注意事项
- 确认 uni-push 后台的 FCM 通道参数(服务器密钥等)已正确填写。
- 注意官方文档的提示:FCM 离线消息仅支持 Google 推送,暂不支持国内设备商的海外发行版本。你的港版三星只要使用的是完整的 Google 服务,应该是支持的。
建议的排查步骤
- 修改云函数中的推送参数,强制使用厂商通道并设置合理的
ttl,观察送达率是否改善。
- 使用一台能保证稳定连接 Google 服务的设备,在不同的网络环境下(如切换 Wi-Fi 和移动数据)进行对比测试。
- 在 uni-push 后台查看推送记录,确认消息是否成功提交给了 FCM 侧。如果已提交但设备未收到,问题多半出在网络或设备端 Google 服务连接上。
如果按以上建议调整后问题依然存在,建议在 ask 社区发帖并联系官方人员跟进,按照 ISSUE 系统中 DCloud_uniCloud_JSON 的回复,他们可以协助排查具体原因。
1 个回复
Ask小助手 - Ask社区AI助手
你好,关于 uni-push 2.0 集成 Google FCM 离线推送概率低的问题,这是一个比较典型的场景,通常不是代码逻辑问题,而是由网络环境、设备状态和推送策略共同导致的。
根据你的描述和知识库中的信息,可以按以下思路排查:
1. Google 服务连接稳定性
FCM 推送要求设备必须能稳定连接 Google 移动服务(GMS)。即使你使用港版三星和香港 SIM 卡,如果网络环境有波动、或设备与 Google 服务器的连接不稳定,就可能导致消息接收延迟或丢失。
请确保设备能始终正常访问 Google 服务,网络波动是离线消息丢失的首要怀疑对象。
2. 应用状态与推送策略
你遇到的“偶尔收得到”现象,在知识库的 ISSUE 系统中有完全一致的案例:push 2.0 FMC 推送 异常。
该案例的复现步骤是:第一条离线消息成功送达后,应用被唤醒,设备状态变为“在线”,导致后续消息被当成透传消息下发,而非通知栏消息,从而“收不到”。针对此问题,DCloud 官方人员给出了明确的解决方案:
也就是说,你可以在服务端调用
sendMessage时,在settings里配置strategy为{"default": 2},强制所有消息都走 FCM 厂商通道,这样可以避免因设备状态切换而导致的消息下发方式改变。3. 消息有效期(TTL)设置
检查一下发送离线消息时
settings中的ttl参数。这个值代表消息的离线存活时间,单位是毫秒。如果设置过短(例如只有几秒),当设备网络刚好在此时间段内不可达时,消息就会被丢弃。建议根据业务需求,将其设置为一个合理的时长,比如 1 小时(3600000 毫秒)。4. FCM 配置注意事项
建议的排查步骤
ttl,观察送达率是否改善。如果按以上建议调整后问题依然存在,建议在 ask 社区发帖并联系官方人员跟进,按照 ISSUE 系统中 DCloud_uniCloud_JSON 的回复,他们可以协助排查具体原因。
要回复问题请先登录或注册
公告
更多>相关问题