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

Flutter真机不显示Awesome Notifications通知,模拟器正常

Flutter提醒应用真机无法显示通知的解决方案

问题概述

开发的提醒类Flutter应用,基于Awesome Notifications实现定时推送通知,模拟器上所有功能正常,但真实设备完全无法显示通知,官方示例代码也存在同样问题。


排查与修复步骤

  • 添加精确闹钟权限:Android 12及以上版本需要SCHEDULE_EXACT_ALARM权限,在android/app/src/main/AndroidManifest.xml中添加:

    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
    
  • 优化权限请求逻辑:原代码仅请求通知权限,需补充精确闹钟权限的动态请求(需先添加permission_handler依赖到pubspec.yaml):

    void _requestPermissions() async {
      if (Platform.isAndroid) {
        // 请求通知权限
        bool notificationAllowed = await AwesomeNotifications().isNotificationAllowed();
        if (!notificationAllowed) {
          await AwesomeNotifications().requestPermissionToSendNotifications();
        }
    
        // Android 12+ 请求精确闹钟权限
        if (PlatformVersion.isAndroid12OrHigher) {
          final alarmStatus = await Permission.scheduleExactAlarm.status;
          if (!alarmStatus.isGranted) {
            await Permission.scheduleExactAlarm.request();
          }
        }
      }
    }
    
  • 调整初始化顺序:先完成权限请求,再初始化通知通道,避免权限未获取时通道创建失败:

    @override
    void initState() {
      super.initState();
      _loadThemePreference();
      _loadReminders();
      // 先请求权限,再初始化通知
      _requestPermissions().then((_) => _initializeNotifications());
    }
    
  • 检查通知渠道与图标:确保通知渠道的importance设为NotificationImportance.High,同时验证应用图标路径正确(真机上图标缺失会导致通知不显示):

    void _initializeNotifications() {
      AwesomeNotifications().initialize(
        // 确保图标在android/res/drawable目录下,文件名匹配
        'resource://drawable/app_icon',
        [
          NotificationChannel(
            channelKey: 'gcalc_channel',
            channelName: '提醒通知',
            channelDescription: '定时提醒专属通知渠道',
            defaultColor: Color(0xFF9D50DD),
            ledColor: Colors.white,
            importance: NotificationImportance.High,
            vibrationPattern: Int64List.fromList([0, 1000, 500, 1000]),
          ),
        ],
      );
    }
    
  • 处理国产ROM后台限制:小米、华为、OPPO等国产系统对后台应用有严格管控,需手动将应用加入后台白名单,允许自启动和后台运行权限。

  • 验证系统时间:确保真机系统时间与提醒时间的时区、数值一致,避免时间偏差导致通知不触发。


额外测试建议

  • 设置1分钟内的提醒进行测试,提升验证效率
  • 检查真机应用的通知设置:确认通知权限开启、对应渠道未被禁用
  • Android 13及以上版本无需额外配置POST_NOTIFICATIONS,permission_handler会自动处理

内容的提问来源于stack exchange,提问作者Rahman ziad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:25:15