FCM控制台按用户属性推送通知异常问题求助
根据你描述的现象,结合Firebase的工作机制,可能的原因及排查方向如下:
用户属性同步延迟导致匹配失败
Firebase Analytics的用户属性并非实时同步到FCM服务器,而是通过批量上传的方式同步(通常间隔数分钟)。当应用处于前台时,你在onCreate中设置的用户属性可能还停留在本地缓存,尚未上传到Firebase服务器,此时通过控制台按用户属性推送时,FCM的筛选规则无法匹配到你的设备。而应用关闭后,下次启动时Analytics有足够时间完成属性同步,所以推送能正常触发。验证方法:设置用户属性后,等待10-15分钟再发起推送,观察前台是否能收到通知。
前台消息未手动处理显示
FCM在应用处于前台时,不会自动弹出系统通知,需要你在FirebaseMessagingService的onMessageReceived方法中手动构建并显示通知。你提到Postman测试正常,但要确认Postman测试的是前台还是后台场景,以及onMessageReceived中是否针对前台消息做了通知显示逻辑。验证方法:在
onMessageReceived中添加日志,打印收到的消息内容,前台推送时查看日志是否有输出。如果日志能打印,但没有通知弹出,就是缺少前台通知显示逻辑。用户属性设置时机覆盖问题
如果应用处于热启动状态(从后台切回前台),Activity的onCreate方法不会再次执行,此时用户属性不会被重新设置。如果之前的属性和当前推送的筛选条件不匹配,就会收不到通知。验证方法:将用户属性设置代码移到
onResume方法中,确保每次应用回到前台都能更新属性,再测试推送效果。FCM前台消息通道优先级问题
部分Android系统对前台应用的通知通道优先级有限制,如果你的通知通道优先级设置过低,可能会被系统拦截或隐藏,导致你误以为没收到。验证方法:检查通知通道的创建代码,确保设置了足够高的优先级(比如
IMPORTANCE_HIGH),并在系统设置中确认该通道未被禁用。
内容的提问来源于stack exchange,提问作者Alex D.

