FCM推送场景下Firebase Analytics未采集notification_open/dismiss事件咨询
我来帮你梳理下可能导致notification_open和notification_dismiss事件没被自动采集的几个常见原因,都是实际排查中经常遇到的:
通知Payload格式不符合要求
Firebase Analytics自动采集这两个事件的前提是,你发送的是标准的FCM通知消息(包含notification字段),而不是纯数据消息。如果你的服务器只发送了data字段,系统不会自动在通知栏展示消息,自然也就没有用户打开或关闭的交互动作。要确保Payload里包含notification模块,比如:{ "notification": { "title": "你的通知标题", "body": "你的通知内容" }, "to": "用户设备令牌" }后台消息被应用自行处理,未让系统展示通知
如果你的应用在后台时,通过onMessageReceived自行处理了FCM消息(比如自定义弹窗而非用系统通知栏),Analytics不会自动采集这些交互事件。只有系统自动展示的通知,用户点击或关闭时才会触发自动采集。这种场景下,你需要手动调用Analytics的日志方法来记录事件,比如:// 通知被打开时 firebaseAnalytics.logEvent(FirebaseAnalytics.Event.NOTIFICATION_OPEN, null) // 通知被关闭时 firebaseAnalytics.logEvent("notification_dismiss", null)设备端的通知权限或系统限制
有些用户可能关闭了应用的通知权限,或者将通知设置为静默模式,导致通知不会出现在通知栏,自然没有交互事件。另外,部分厂商定制的Android系统(比如小米、华为)可能会对通知做拦截或优化,导致Analytics无法捕获这些事件。建议在不同设备上测试,确认通知能正常显示在通知栏。Analytics事件的延迟或过滤
Firebase Analytics的事件并不是实时同步到控制台的,有时候需要等待1-2小时才能看到数据。另外,检查控制台的事件过滤器,有没有误将notification_open和notification_dismiss排除在外。同时确保你的应用已经正确初始化了Analytics(启动时调用FirebaseAnalytics.getInstance(context))。通知点击动作是自定义Intent
如果你的通知设置了自定义的点击动作(比如打开网页、其他应用,而非默认打开当前应用),Analytics也不会自动触发notification_open事件。这种情况下同样需要手动记录该事件。
你可以按照上面的顺序逐一排查,先从Payload格式和通知展示情况入手,这两个是最常见的问题。
内容的提问来源于stack exchange,提问作者HEE JAE CHOI

