微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 本地通知插件:createNotificationChannel 函数不起作用

如何解决Flutter 本地通知插件:createNotificationChannel 函数不起作用

我正在尝试使用 Flutter_local_notifications: ^5.0.0+4 创建一个 android 通知频道 把它看起来不像应该的那样工作。

我使用 getNotificationChannels 编写了一个代码来验证频道是否创建成功

请看我的代码

    Future<void> _getNotificationChannels() async {

    await FlutterlocalnotificationsPlugin.resolvePlatformSpecificImplementation<
            AndroidFlutterlocalnotificationsPlugin>()?.createNotificationChannel(AndroidNotificationChannel(
      'high_importance_channel',// id
      'High Importance Notifications',// title
      'This channel is used for important notifications',// description
      importance: Importance.max,));

    final Widget notificationChannelsDialogContent =
        await _getNotificationChannelsDialogContent();
    await showDialog<void>(
      context: context,builder: (BuildContext context) => AlertDialog(
        content: notificationChannelsDialogContent,actions: <Widget>[
          TextButton(
            onpressed: () {
              Navigator.of(context).pop();
            },child: const Text('OK'),),],);
  }

  Future<Widget> _getNotificationChannelsDialogContent() async {
    try {
      final List<AndroidNotificationChannel>? channels =
          await FlutterlocalnotificationsPlugin
              .resolvePlatformSpecificImplementation<
                  AndroidFlutterlocalnotificationsPlugin>()!
              .getNotificationChannels();

      return Container(
        width: double.maxFinite,child: ListView(
          children: <Widget>[
            const Text(
              'Notifications Channels',style: TextStyle(fontWeight: FontWeight.bold),const Divider(color: Colors.black),if (channels?.isEmpty ?? true)
              const Text('No notification channels')
            else
              for (AndroidNotificationChannel channel in channels!)
                Column(
                  crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
                    Text('id: ${channel.id}\n'
                        'name: ${channel.name}\n'
                        'description: ${channel.description}\n'
                        'groupId: ${channel.groupId}\n'
                        'importance: ${channel.importance.value}\n'
                        'playSound: ${channel.playSound}\n'
                        'sound: ${channel.sound?.sound}\n'
                        'enableVibration: ${channel.enableVibration}\n'
                        'vibrationPattern: ${channel.vibrationPattern}\n'
                        'showBadge: ${channel.showBadge}\n'
                        'enableLights: ${channel.enableLights}\n'
                        'ledColor: ${channel.ledColor}\n'),);
    } on PlatformException catch (error) {
      return Text(
        'Error calling "getNotificationChannels"\n'
        'code: ${error.code}\n'
        'message: ${error.message}',);
    }
  }

如您所见,我使用 createNotificationChannel 创建通知频道,然后我使用 getNotificationChannels 查看频道是否已成功创建。

我总是在对话框中收到“没有通知渠道”的消息。 我不知道我的代码有什么问题,

感谢您的帮助

解决方法

问题是我用于测试的 Android 版本, 通知渠道是一个特定于 Android 8 或更新版本的概念,这就是为什么 API 文档声明创建渠道的方法仅适用于这些版本的 Android

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。