鸿蒙推送移动端应用被杀死状态不调用push-server

卡拉米 14小时前 127

我们现在遇到一个问题,调用发送消息接口http://domain:18080/admin/message/send 入参是

{\"robot_id\":\"FireRobot\",\"text\":\"海草集收款 1 元\",\"pushContent\":\"海草集收款\",\"pushData\":\"海草集收款.mp3#1.mp3#1.mp3#1.mp3#1.mp3#1.mp3#元.mp3\",\"uid\":\"hfqqmws2k\",\"type\":1001}"

登录的设备为鸿蒙系统的时候,hfqqmws2k这个账号是可以正常离线语音播报的,他是调用18080之后分配调用push-server的/harmony/push这个方法,正常的时候进入这个方法我的日志是有打印的,但是换了账号就不调用这个方法 我想问一下这个问题是由于什么呢,应该怎么解决呢 我看im-server的日志这两种情况下,日志打印的确实是不一样的,他是没有调用/harmony/push的

{"sender":"FireRobot","senderName":"小海","senderPortrait":"https://images.youmeiren.cn/wc/im/logo.png...
2026-05-20 12:07:03,368 INFO  [messages26] (IMHandler.java:172) - imHandler fromUser=htgqmws2k, clientId=d35f74a1-301c-4c82-87b9-01b52c9a62251767883201895, topic=MP
2026-05-20 12:07:03,368 INFO  [messages26] (PullMessageHandler.java:40) - User htgqmws2k pull message request(554724476661530753) result count(1), payload size(242), current(554726111492178049)
2026-05-20 12:07:20,076 INFO  [n-n-worker4] (ProtocolProcessor.java:225) - Processing CONNECT message. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, username=6egqmws2k
2026-05-20 12:07:20,076 INFO  [n-n-worker4] (ProtocolProcessor.java:479) - session BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81 platform 10
2026-05-20 12:07:20,076 INFO  [n-n-worker4] (ProtocolProcessor.java:558) - Configuring connection. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
2026-05-20 12:07:20,076 INFO  [n-n-worker4] (ProtocolProcessor.java:517) - Sending connect ACK. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
2026-05-20 12:07:20,077 INFO  [n-n-worker4] (ProtocolProcessor.java:552) - The connect ACK has been sent. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
2026-05-20 12:07:20,077 INFO  [n-n-worker4] (ProtocolProcessor.java:407) - The CONNECT message has been processed. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, username=6egqmws2k
2026-05-20 12:07:20,105 INFO  [messages24] (IMHandler.java:172) - imHandler fromUser=6egqmws2k, clientId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, topic=MP
2026-05-20 12:07:20,105 INFO  [messages24] (PullMessageHandler.java:40) - User 6egqmws2k pull message request(554725220420681857) result count(1), payload size(205), current(554725954805563521)
2026-05-20 12:07:20,105 INFO  [messages24] (Counter.java:105) - MQTT summary: time pass: 26601 ms, require count: 7 times, total times: 1, max duration:1 ms, method: MS, para: FireRobot:225
2026-05-20 12:07:20,145 INFO  [business11] (IMHandler.java:172) - imHandler fromUser=6egqmws2k, clientId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, topic=UPUI
2026-05-20 12:07:20,312 INFO  [business20] (IMHandler.java:172) - imHandler fromUser=6egqmws2k, clientId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, topic=UDT
2026-05-20 12:07:20,312 INFO  [business20] (UploadDeviceTokenHandler.java:36) - Set device token, userId 6egqmws2k, platform 10, pushType 8
2026-05-20 12:07:20,321 INFO  [db26] (DatabaseStore.java:6015) - Update rows 1
2026-05-20 12:07:20,321 INFO  [db26] (Counter.java:105) - DB summary: time pass: 40889 ms, require count: 2 times, total times: 13, max duration:9 ms, method: 5994W, para: null
2026-05-20 12:07:20,325 INFO  [db29] (DatabaseStore.java:5974) - Update rows 0
2026-05-20 12:07:22,249 INFO  [business14] (IMHandler.java:172) - imHandler fromUser=6egqmws2k, clientId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, topic=ATR
2026-05-20 12:07:22,981 INFO  [db23] (Counter.java:105) - MONGO summary: time pass: 20541 ms, require count: 6 times, total times: 30, max duration:5 ms, method: 1979R, para: null
2026-05-20 12:07:25,247 INFO  [business18] (IMHandler.java:172) - imHandler fromUser=6egqmws2k, clientId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, topic=CST
2026-05-20 12:07:25,256 INFO  [db3] (DatabaseStore.java:6044) - Update rows 1
2026-05-20 12:07:25,259 INFO  [db30] (DatabaseStore.java:6044) - Update rows 1
2026-05-20 12:07:25,267 INFO  [n-n-worker4] (NettyMQTTHandler.java:107) - Notifying connection lost event. MqttClientId = BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81.
2026-05-20 12:07:25,267 INFO  [n-n-worker4] (ProtocolProcessor.java:857) - Processing connection lost event. CId=BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
2026-05-20 12:07:25,267 INFO  [n-n-worker4] (MessageMetricsHandler.java:72) - channel<6egqmws2k> closing after read 6 messages and wrote 6 messages
2026-05-20 12:07:32,783 INFO  [ls-admin-worker6] (ActionHandler.java:157) - Http request whit url /admin/relation/get
2026-05-20 12:07:32,880 INFO  [ls-admin-worker2] (ActionHandler.java:157) - Http request whit url /admin/message/send
2026-05-20 12:07:32,880 INFO  [messages30] (IMHandler.java:172) - imHandler fromUser=b9f1f769-d778-4793-9fc9-524760591bef, clientId=null, topic=MS
2026-05-20 12:07:32,880 INFO  [messages30] (Counter.java:105) - MQTT summary: time pass: 12775 ms, require count: 5 times, total times: 0, max duration:0 ms, method: null, para: null
2026-05-20 12:07:32,880 INFO  [pool-2-thread-1] (HttpUtils.java:109) - POST to http://localhost:8888/im_event/message with data {"messageId":554726175025397889,"sender":"b9f1f769-d778-4793-9fc9-524760591bef","conv":{"type":0,"ta...
2026-05-20 12:07:32,885 INFO  [messages30] (MessagesPublisher.java:1468) - Publish target count is 2
2026-05-20 12:07:32,885 INFO  [messages30] (MessagesPublisher.java:269) - publish2Receivers receivers:[b9f1f769-d778-4793-9fc9-524760591bef, 7f55ebe708f14364928b5e24f021d7ee]这是554725954805563521这条消息的这条是不去调用/harmony/push的,----------------------------------------------------------------------------- 2026-05-20 12:08:13,819 INFO  [ls-admin-worker1] (ActionHandler.java:157) - Http request whit url /admin/message/send
2026-05-20 12:08:13,819 INFO  [messages10] (IMHandler.java:172) - imHandler fromUser=FireRobot, clientId=null, topic=MS
2026-05-20 12:08:13,819 INFO  [pool-2-thread-1] (HttpUtils.java:109) - POST to http://localhost:8888/im_event/message with data {"messageId":554726260880703617,"sender":"FireRobot","conv":{"type":0,"target":"hfqqmws2k","line":0}...
2026-05-20 12:08:13,824 INFO  [hz._hzInstance_1_wfc-pro.partition-operation.thread-0] (Counter.java:105) - MONGO summary: time pass: 15843 ms, require count: 18 times, total times: 84, max duration:5 ms, method: 4724W, para: null
2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:1468) - Publish target count is 2
2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:269) - publish2Receivers receivers:[FireRobot, hfqqmws2k]
2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:944) - publish to user:hfqqmws2k
2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:1038) - need push to hfqqmws2k BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
2026-05-20 12:08:13,824 INFO  [messages22] (PersistentQueueMessageSender.java:36) - Send push to BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, message from FireRobot
2026-05-20 12:08:13,824 INFO  [messages22] (PushServer.java:69) - try to delivery push diviceId = BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, conversationType = 0, pushContent is empty false
2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:944) - publish to user:FireRobot
2026-05-20 12:08:13,824 INFO  [push3] (HttpUtils.java:109) - POST to http://localhost:8085/harmony/push with data {"sender":"FireRobot","senderName":"小海","senderPortrait":"https://images.youmeiren.cn/wc/im/logo.png...
2026-05-20 12:08:17,036 INFO  [n-n-worker7] (ProtocolProcessor.java:225) - Processing CONNECT message. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438, username=7dc43726613149ab802dfbd5f9be133b
2026-05-20 12:08:17,036 INFO  [n-n-worker7] (ProtocolProcessor.java:479) - session 64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438 platform 2
2026-05-20 12:08:17,036 INFO  [n-n-worker7] (ProtocolProcessor.java:558) - Configuring connection. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438
2026-05-20 12:08:17,036 INFO  [n-n-worker7] (ProtocolProcessor.java:517) - Sending connect ACK. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438
2026-05-20 12:08:17,037 INFO  [n-n-worker7] (ProtocolProcessor.java:552) - The connect ACK has been sent. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438
2026-05-20 12:08:17,037 INFO  [n-n-worker7] (ProtocolProcessor.java:407) - The CONNECT message has been processed. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438, username=7dc43726613149ab802dfbd5f9be133b
2026-05-20 12:08:17,083 INFO  [messages15] (IMHandler.java:172) - imHandler fromUser=7dc43726613149ab802dfbd5f9be133b, clientId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438, topic=MP
2026-05-20 12:08:17,083 INFO  [messages15] (PullMessageHandler.java:40) - User 7dc43726613149ab802dfbd5f9be133b pull message request(554708434260328577) result count(0), payload size(20), current(554708434260328577)
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:116) - An unexpected exception was caught while processing MQTT message. Closing Netty channel. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438, cause=null, errorMessage=Connection reset by peer
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - sun.nio.ch.FileDispatcherImpl.read0(Native Method)
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - sun.nio.ch.IOUtil.read(IOUtil.java:192)
2026-05-20 12:08:24,620 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:732)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:658)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
2026-05-20 12:08:24,621 ERROR [n-n-worker7] (NettyMQTTHandler.java:119) - java.lang.Thread.run(Thread.java:745)
2026-05-20 12:08:24,621 INFO  [n-n-worker7] (MessageMetricsHandler.java:72) - channel<7dc43726613149ab802dfbd5f9be133b> closing after read 2 messages and wrote 2 messages
2026-05-20 12:08:24,621 INFO  [n-n-worker7] (NettyMQTTHandler.java:107) - Notifying connection lost event. MqttClientId = 64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438.
2026-05-20 12:08:24,621 INFO  [n-n-worker7] (ProtocolProcessor.java:857) - Processing connection lost event. CId=64c54c6f-d2f1-4017-bf07-2e12f70a78641778754381438
2026-05-20 12:08:24,621 INFO  [n-n-worker7] (MessageMetricsHandler.java:72) - channel<7dc43726613149ab802dfbd5f9be133b> closing after read 2 messages and wrote 2 messages
2026-05-20 12:08:32,982 INFO  [db31] (Counter.java:105) - MONGO summary: time pass: 19158 ms, require count: 2 times, total times: 10, max duration:5 ms, method: 1676W, para: null

这条就是正常的,这是由什么控制的啊 应该怎么解决呢,我需要让他也调用push-server的鸿蒙推送

最新回复 (6)
  • wfclaw 14小时前
    引用 2
    你好,这个问题一般是**deviceToken未正确注册**导致的。

    根据代码逻辑,im-server在调用push-server前会先检查session中的deviceToken:

    ```
    if (StringUtil.isNullOrEmpty(session.getDeviceToken())) {
        LOG.warn("Device token is empty for device {}", deviceId);
        return;
    }
    ```

    如果deviceToken为空,就不会调用/harmony/push。

    建议按以下步骤排查:

    **1. 检查im-server日志**
    查看日志中是否有 "Device token is empty" 的警告,确认是哪个设备token缺失。

    **2. 检查客户端token上报**
    确认不正常的那个账号,客户端在登录时是否成功上报了deviceToken。不同账号可能使用了不同的登录方式或客户端版本,导致token上报逻辑有差异。

    **3. 检查平台类型**
    im-server根据session中的platform类型决定调用哪个push接口。确认异常账号的platform字段是否为HarmonyOS(Platform_Harmony),如果platform识别错误,也会走不到/harmony/push分支。

    **4. 对比两个账号的session信息**
    通过im-server的管理接口或数据库,对比正常账号和异常账号的session记录,重点看device_token和platform两个字段的差异。

    一般来说,同一个应用、同一个设备型号,不同账号表现不同,大概率是客户端侧deviceToken获取或上报的问题。建议先抓客户端日志,确认token是否获取成功并正确上报。
  • 卡拉米 13小时前
    引用 3
    数据库怎么比对啊 是哪张表啊 wfchat这个数据库的t_user_session么
  • 卡拉米 13小时前
    引用 4
    现在我们应该确定的是deviceToken不为空,日志没有打印为空 客户端有发送 平台类型我调用getUserOnlineStatus,返回{"code":0,"msg":"success","result":{"sessions":[{"clientId":"03842CEF-6385-4f05-9C55C1-544BF366B8","userId":"6egqmws2k","platform":10,"status":1,"lastSeen":1779257935971,"packageName":"wildfirechat"},{"clientId":"a1c18ace-d417-4d1d-8cc3-56556460965c","userId":"6egqmws2k","platform":5,"status":1,"lastSeen":1765673097904,"packageName":"cn.wildfirechat.chat.web"}]}}一个是10的一个是5的。
  • wfclaw 12小时前
    引用 5
    你好,感谢提供的补充信息。

    根据你提供的信息,可以确认:
    1. deviceToken 不为空,且已正确上报(日志中有 `Set device token, userId 6egqmws2k, platform 10, pushType 8`)
    2. platform=10 对应 HarmonyOS,平台类型正确
    3. packageName 也有值("wildfirechat")

    目前 deviceToken 和平台类型都没有问题,但 push-server 的 /harmony/push 仍然没有被调用。

    **建议进一步排查方向:**

    1. 确认 im-server 的推送配置
       检查 im-server 的配置文件中是否正确配置了 `PUSH_HARMONY_SERVER_ADDRESS`,指向 push-server 的地址:
       ```
       PUSH_HARMONY_SERVER_ADDRESS http://push-server-ip:8085
       ```
       如果这个地址没有配置或配置错误,im-server 不会调用 /harmony/push。

    2. 确认异常账号的设备是否在线
       从日志看,6egqmws2k 登录后不久就断开了连接(`Notifying connection lost event`)。如果设备在线时收到消息,im-server 不会触发离线推送。请确认发送消息时,目标账号的设备是否处于离线状态。

    3. 对比两个账号的推送日志
       正常推送时,im-server 日志应该有类似 `try to delivery push` 的日志。请对比 hfqqmws2k 和 6egqmws2k 在收到消息时的日志差异。

    这个问题涉及服务端推送逻辑的深度排查,建议微信联系 **wfchat** 或 **HeavyRain**,提供两个账号的完整对比日志,方便官方定位问题。
  • HeavyRain 11小时前
    引用 6
    2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:944) - publish to user:hfqqmws2k
    2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:1038) - need push to hfqqmws2k BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81
    2026-05-20 12:08:13,824 INFO  [messages22] (PersistentQueueMessageSender.java:36) - Send push to BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, message from FireRobot
    2026-05-20 12:08:13,824 INFO  [messages22] (PushServer.java:69) - try to delivery push diviceId = BC59BAC6-1EB7-41B5-8C8F21-A1193DCD81, conversationType = 0, pushContent is empty false
    2026-05-20 12:08:13,824 INFO  [messages22] (MessagesPublisher.java:944) - publish to user:FireRobot
    2026-05-20 12:08:13,824 INFO  [push3] (HttpUtils.java:109) - POST to http://localhost:8085/harmony/push with data {"sender":"FireRobot","senderName":"小海","senderPortrait":"https://images.youmeiren.cn/wc/im/logo.png...

    这是分发给一个用户的相关日志,请把出问题时,publish to user:hfqqmws2k下面这一段发出来看看

  • wfclaw 1小时前
    引用 7
    这个是因为不同账号的设备平台类型不同导致的。

    **问题分析:**

    im-server 根据客户端登录时上报的 platform 值来决定调用哪个推送端点:
    - platform = 10/11/12/13(鸿蒙系列)→ 调用 `/harmony/push`
    - platform = 2/9(Android 系列)→ 调用 `/android/push`
    - platform = 1/8(iOS 系列)→ 调用 `/ios/push`

    如果某些账号登录时客户端上报的 platform 不是 10,而是 2(Android),那么服务端就不会走鸿蒙推送通道。

    **排查方向:**

    1. **检查客户端版本**
       确认所有账号使用的都是鸿蒙原生客户端(hm-chat),而不是 Android 客户端运行在鸿蒙系统上。Android 客户端在鸿蒙手机上运行时,上报的 platform 仍然是 2(Android),不会走 `/harmony/push`。

    2. **检查客户端 DeviceInfo 上报**
       在鸿蒙客户端的 `app_callback.mm` 或对应文件中,确认 platform 字段设置为 `PlatformType_Harmony(10)`。

    3. **检查服务端日志中的 platform 值**
       对比能正常推送和不能推送的账号的 CONNECT 日志,重点看 `platform` 字段的值:
       - 正常推送的应该是 `platform 10`
       - 如果看到 `platform 2`,说明客户端是 Android 版本,不是鸿蒙版本

    4. **推送 token 注册**
       确认问题账号的鸿蒙客户端正确获取了鸿蒙推送 token(通过 `PushKit`),而不是 Android 的 FCM/小米/华为推送 token。

    建议先对比正常和不正常账号的 im-server CONNECT 日志中的 platform 值,这是最直接的判断依据。
返回