Android 12及以上设备通知不显示问题咨询(权限已开启)
Android 12+ 无法接收后端触发Firebase通知的排查方案
检查后端通知Payload格式
Android 12+对通知规范要求更严格,重点核对以下几点:- 必须指定有效的
channel_id,后端发送的渠道ID需与App内创建的通知渠道完全匹配,否则通知会被静默丢弃; - 对比Firebase测试通知的Payload结构,确认后端未遗漏
notification字段的必要参数(如title、body),若仅发送data类型Payload,需确保App内有手动构建通知的逻辑; - 避免使用已被废弃的
priority字段,Android 12+优先通过通知渠道的importance属性控制通知优先级。
- 必须指定有效的
验证App内消息处理逻辑
检查FirebaseMessagingService的onMessageReceived方法:- 若后端发送
data类型通知,需确保代码中正确调用NotificationManager.notify(),且使用的渠道ID已在App启动时完成创建; - 确认
POST_NOTIFICATIONS权限已被用户授予(即使代码中配置了权限,也需在系统设置中验证是否开启); - 示例创建通知渠道代码:
private fun createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannel( "YOUR_VALID_CHANNEL_ID", "业务通知", NotificationManager.IMPORTANCE_DEFAULT ).apply { description = "接收后端触发的通知" } val notificationManager = getSystemService(NotificationManager::class.java) notificationManager.createNotificationChannel(channel) } }- 若后端发送
核对后端使用的设备Token
确认后端存储的Firebase Token为当前Android 13设备的有效Token——App更新、设备重置等操作会导致Token变更,若后端未同步更新,会出现通知发送无响应的情况。可在App内打印当前Token,与后端存储值对比验证。排查系统后台限制
Android 12+的Doze模式、App Standby会限制后台应用的消息接收:- 测试将App加入电池优化白名单后,触发后端通知,看是否能正常接收;
- 在App前台状态下触发通知,排查是否因后台限制导致消息被延迟或拦截。
检查Firebase服务配置
确认Firebase控制台中项目的Cloud Messaging API(Legacy)已启用,后端使用的服务器密钥未过期、权限配置正确——密钥错误或API未启用会导致后端通知无法被Firebase路由到设备。
内容的提问来源于stack exchange,提问作者Vinay Bakle
相关产品推荐
相关产品推荐

