一、前台应用的通知处理简介
在调用推送接口时可以设置“foreground_show”字段控制前台应用的通知栏消息是否通过NC展示。“foreground_show”默认值为“true”,应用在前台时由NC展示通知栏消息;当设置为“false”时,应用在前台时,通知栏消息将不会展示,消息内容会通过onMessageReceived(RemoteMessage message)方法传递给应用。前台应用的通知处理指导文档。
二、问题现象
推送请求消息体中设置“foreground_show”值为“false”,推送消息时应用在前台,消息没有通过onMessageReceived(RemoteMessage message)方法传递给应用,仍然是通过通知栏展示的。
三、问题排查
该功能对手机系统版本和集成的push SDK版本有要求,可以先检查手机系统版本和集成的push SDK版本是否符合如下要求。
如果手机系统版本和集成的push SDK版本符合要求,则需要抓取logcat日志。排查工程中定义了几个继承HmsMessageService的类,如果定义了多个继承HmsMessageService的类,也会导致实现的方法不会被调用,继承HmsMessageService的类只能有一个。
日志抓取方法:
1、使用adb连上手机后,分别执行下面命令:
adb shell setprop log.tag.hwpush VERBOSE
adb logcat -v threadtime 1> D:\hwpush.log
2、尝试复现遇到的问题场景。
3、等待几十秒,按快捷键“Ctrl+C”完成日志抓取
注:生成日志后注意看下日志记录的时间段需要包含复现问题的时间点。
查找关键日志:
搜索HmsMessageService num is关键字,找到如上图所示的日志,结合日志上下文中的packageName确定对应应用的日志,HmsMessageService num is后面的数值就是继承HmsMessageService的类的数量,如果不为1,请排查工程代码,并删除多余的类。
了解更多详情>>
访问推送服务开发者联盟官网
获取推送服务开发指导文档