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

求助:Flutter中Android 12及以上版本Local Notification失效问题

Android 12+ 适配 awesome_notification 通知失效问题解决
  • 使用插件:awesome_notification
    enter image description here

你提到本地通知代码在Android 11及以下正常运行,但在Android 12及以上版本,基础通知和定时通知都无法工作,这是因为Android 12(API 31)及以上对通知系统新增了强制规范,以下是针对性的适配方案:

1. 强制创建合规通知渠道

Android 12+要求所有通知必须绑定已创建的通知渠道,且需配置lockscreenVisibility等新参数:

await AwesomeNotifications().initialize(
    null,
    [
        NotificationChannel(
            channelKey: 'basic_notify',
            channelName: '基础通知渠道',
            channelDescription: '用于发送普通本地通知',
            importance: NotificationImportance.High,
            lockscreenVisibility: NotificationVisibility.Public,
            defaultColor: Colors.blue,
            ledColor: Colors.blue
        ),
        NotificationChannel(
            channelKey: 'scheduled_notify',
            channelName: '定时通知渠道',
            channelDescription: '用于发送定时触发的通知',
            importance: NotificationImportance.High,
            lockscreenVisibility: NotificationVisibility.Public
        )
    ]
);

2. 动态申请通知权限

Android 13(API 33)及以上必须动态申请POST_NOTIFICATIONS权限,Android 12虽不强制,但建议兼容以覆盖全版本:

bool hasPermission = await AwesomeNotifications().isNotificationAllowed();
if (!hasPermission) {
    hasPermission = await AwesomeNotifications().requestPermissionToSendNotifications();
}

3. 定时通知绑定对应渠道

确保定时通知代码指定了正确的渠道Key,否则Android 12+会拒绝展示:

await AwesomeNotifications().createNotification(
    content: NotificationContent(
        id: 101,
        channelKey: 'scheduled_notify', // 必须匹配已创建的渠道Key
        title: '定时提醒',
        body: '预设的定时通知已触发',
    ),
    schedule: NotificationCalendar(
        hour: 14,
        minute: 30,
        repeats: false
    )
);

4. 完善AndroidManifest配置

添加必要权限和组件,确保插件能正常工作:

<!-- 通知权限 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- 精确定时需要的权限 -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />

<application ...>
    <!-- 插件需要的广播接收器 -->
    <receiver android:name="com.awesome_notifications.receivers.AlarmReceiver" />
    <receiver android:name="com.awesome_notifications.receivers.BootReceiver" />
</application>

最后建议把awesome_notification更新到最新版本,避免版本迭代带来的兼容问题。

内容的提问来源于stack exchange,提问作者Shadman Nehal Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:15:36