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()方法设置未读计数:
如果是通过Firebase控制台/服务端推送通知,需要在推送Payload的Notification notification = new NotificationCompat.Builder(context, "custom_notification_channel_id") .setSmallIcon(R.drawable.ic_notification) .setContentTitle("新消息") .setContentText("你有一条新的消息") // 配置角标展示的数字 .setNumber(unreadCount) .build();android.notification字段中添加notification_count参数传递未读数。步骤3:验证配置生效
完成上述配置后卸载重装应用,触发一次通知推送,再进入系统的应用通知设置页,即可看到角标类型的数字选项。
效果对比
| 我的应用通知设置页 | Facebook应用通知设置页 |
|---|---|
![]() | ![]() |
内容的提问来源于stack exchange,提问作者Sachin Singh
相关产品推荐
相关产品推荐



