You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:55:12