Flutter使用FCM推送通知报错NotificationChannelGroup不存在如何解决
问题原因
报错的核心原因是你为Android通知通道绑定了groupId参数,但没有提前创建对应的通知渠道组。Android 8.0及以上系统要求,通知通道如果关联了分组,必须先创建对应分组,才能创建绑定该分组的通知通道,否则就会抛出NotificationChannelGroup doesn't exist异常,导致通知无法正常弹出。
解决方法
方法一:保留分组功能,提前创建通知渠道组
修改pushNotification.dart中initialize方法的代码,在创建通知通道前先创建对应的渠道组:
initialize() async { await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); final androidPlugin = flutterLocalNotificationplugin .resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>(); // 新增:先创建通知渠道组 const AndroidNotificationChannelGroup notificationGroup = AndroidNotificationChannelGroup( "Notification_group", "重要通知分组", description: "用于归类所有高优先级通知", ); await androidPlugin?.createNotificationChannelGroup(notificationGroup); // 再创建通知通道 await androidPlugin?.createNotificationChannel(channel); // 后面原有代码保持不变 var intializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher'); // ... 剩余原有代码 }
方法二:不需要分组功能,直接移除groupId参数
如果不需要对通知做分组管理,直接修改AndroidNotificationChannel的定义,删除groupId参数即可:
const AndroidNotificationChannel channel = AndroidNotificationChannel( 'high_importance_channel', "High Importance Notifcations", "This channel is used important notification", // 删掉groupId: "Notification_group" 这一行即可 );
操作注意事项
- 修改代码后需要完全卸载模拟器上的旧应用再重新运行安装,因为Android通知通道创建后就无法修改配置,只有重装才能让新的通道/分组配置生效
- 检查模拟器是否开启了该应用的通知权限,确保通知不会被系统拦截
- 确认测试时模拟器保持联网状态,才能正常接收FCM推送
内容的提问来源于stack exchange,提问作者New user
相关产品推荐
相关产品推荐

