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

Android 11下使用Firebase Messaging无法设置通知角标为数字类型咨询

Android 11 通知角标数字选项缺失解决方案

问题原因

Android 11(API 30)调整了通知角标(通知徽章)的展示规则,不再默认给所有应用提供数字角标设置选项,只有应用的通知通道显式配置角标权限、且发送通知时指定计数参数时,系统才会在通知设置页展示数字角标配置项,该问题和Manifest额外权限无关。

解决步骤

  • 步骤1:正确配置通知通道

    Android 8.0及以上版本必须使用通知通道发送通知,创建通道时需要显式开启角标展示,且通道优先级不低于默认级别:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        String channelId = "custom_notification_channel_id";
        CharSequence channelName = "消息通知";
        // 优先级至少设为IMPORTANCE_DEFAULT才能支持角标展示
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
        // 核心配置:开启该通道的角标展示权限
        channel.setShowBadge(true);
        NotificationManager manager = getSystemService(NotificationManager.class);
        manager.createNotificationChannel(channel);
    }
    

    注意:如果该通道之前已经创建过,修改配置不会生效,需要卸载应用重装、或者修改channelId创建新的通道。

  • 步骤2:发送通知时指定未读计数

    无论是Firebase Messaging接收到通知后自行构建通知,还是通过代码主动发通知,都需要调用setNumber()方法设置未读计数:
    Notification notification = new NotificationCompat.Builder(context, "custom_notification_channel_id")
            .setSmallIcon(R.drawable.ic_notification)
            .setContentTitle("新消息")
            .setContentText("你有一条新的消息")
            // 配置角标展示的数字
            .setNumber(unreadCount)
            .build();
    
    如果是通过Firebase控制台/服务端推送通知,需要在推送Payload的android.notification字段中添加notification_count参数传递未读数。
  • 步骤3:验证配置生效

    完成上述配置后卸载重装应用,触发一次通知推送,再进入系统的应用通知设置页,即可看到角标类型的数字选项。

效果对比

我的应用通知设置页Facebook应用通知设置页
我的应用通知设置页Facebook应用通知设置页

内容的提问来源于stack exchange,提问作者Sachin Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:03