华为Push Kit服务仅'Sport'主题无法接收数据消息求助
华为Push Kit Sport主题消息接收异常排查方案
确认主题名称一致性
华为Push Kit的主题名称大小写敏感,务必保证订阅的Sport主题和Postman发送时指定的主题完全一致(包括大小写、特殊字符、空格)。另外你提供的示例代码订阅的是"stiri",请检查实际订阅Sport主题的代码是否存在拼写错误。为订阅操作添加回调校验
给订阅/取消订阅操作添加完成回调,确保每次操作都真实执行成功,避免静默失败:// 订阅Sport主题并校验结果 HmsMessaging.getInstance(this@MyActivity) .subscribe("Sport") .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("PushKit", "Sport主题订阅成功") } else { Log.e("PushKit", "Sport主题订阅失败: ${task.exception?.message}") } } // 取消订阅时同样添加回调 HmsMessaging.getInstance(this@MyActivity) .unsubscribe("Sport") .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d("PushKit", "Sport主题取消订阅成功") // 取消成功后再执行重新订阅 subscribeSportTopic() } }检查设备端消息接收逻辑
确认自定义的HmsMessageService实现类中,没有对Sport主题的消息做特殊过滤或拦截。同时确保onMessageReceived方法正确处理数据消息(数据消息不会自动弹出通知,需自行处理展示逻辑)。核对开发者后台状态
登录华为开发者后台的Push Kit控制台:- 查看Sport主题的订阅用户数,确认你的设备已被统计在内;
- 查看消息发送记录,确认发送给Sport主题的消息状态为「已送达」,而非「待发送」或「失败」。
清除缓存并重启服务
- 进入设备设置,找到你的应用,清除缓存和数据(注意备份重要数据)后重启应用;
- 调用
HmsMessaging.getInstance(this).setAutoInitEnabled(true),确保Push服务自动初始化正常。
内容的提问来源于stack exchange,提问作者Vlad.mir
相关产品推荐
相关产品推荐

