HarmonyOS鸿蒙Next中flutter适配实现本地通知
HarmonyOS鸿蒙Next中flutter适配实现本地通知
flutter_local_notifications:
git:
url: https://gitcode.com/openharmony-sig/fluttertpc_flutter_local_notifications.git
哪位大佬使用这个插件,在鸿蒙上实现过本地通知;
想问一下, 为什么通知一直不会弹出来。
您好,请问是不是没有调用通知授权的接口呢?您可以运行以下插件中example启动应用,点击允许通知,然后点击其中的示例,即可收到通知。
更多关于HarmonyOS鸿蒙Next中flutter适配实现本地通知的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
谢谢各位的回复,我已经解决了, 总结如下:
1、我发出的这个flutter插件可以使用,只是在鸿蒙上,在不申请权限的情况下,只能是APP打开状态下,才可以弹通知,如果APP关闭了,那就没办法弹了。
2、我去申请了相关的权限,APP重新打包后,就可以正常实现定时消息通知了, 就是app完全关闭的情况下,也可以收到通知消息。
你考虑一下,是不是自己没给权限啊?
Flutter 插件接入鸿蒙本地通知时,建议先把问题拆成两层验证:先确认原生 HarmonyOS 通知链路正常,再看 Flutter 插件适配层。
- 在原生侧先调用
isNotificationEnabled()判断通知是否已授权;未授权时调用requestEnableNotification(context)。 - 如果用户曾拒绝授权,不能反复依赖授权弹窗,应使用
openNotificationSettings(context)引导到通知设置页。 - 确认发布通知时使用的是真机或支持通知能力的设备环境,应用没有被系统通知开关、免打扰、后台策略限制。
- 检查插件是否已经适配当前 HarmonyOS/Flutter 工程版本。开源插件如果只是 OpenHarmony 适配,可能还需要补齐 HarmonyOS 侧的权限申请、AbilityContext 获取、通知通道/发布逻辑。
- 用一个最小原生 demo 能弹通知后,再接回 Flutter 插件;如果原生能弹、Flutter 不弹,问题基本就在插件桥接或参数映射层。
排查时重点看 hilog 中 notificationManager 相关错误码。常见情况不是“通知发布接口没调用”,而是授权未通过、上下文不对、插件没有正确走 HarmonyOS 通知授权流程。
我之前自己写过一个demo,地址在这https://gitcode.com/u012582674/notification_demo,可以参考一下。
在HarmonyOS Next中,Flutter实现本地通知需通过MethodChannel调用鸿蒙Notification Kit。原生侧使用@ohos.notificationManager创建通知,配置WantAgent处理点击。需在module.json5添加ohos.permission.NOTIFICATION_CONTROLLER权限。Flutter端可参考flutter_local_notifications插件,自定义平台通道适配鸿蒙API。
在HarmonyOS Next上使用flutter_local_notifications插件通知不弹出,通常是权限未正确声明/授权和**未创建通知槽位(NotificationSlot)**所致。
解决步骤:
-
声明并动态申请通知权限
在entry/src/main/module.json5中添加:"requestPermissions": [ { "name": "ohos.permission.NOTIFICATION" } ]该权限为
user_grant级别,需在运行时请求(可使用permission_handler等插件),否则系统会拒绝发送。 -
初始化时创建通知槽位
插件底层依赖HarmonyOS的NotificationSlot,必须提前创建。在Flutter端调用initialize时确保传入合适的设置即可触发原生槽位创建:final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); const initializationSettings = InitializationSettings( android: AndroidInitializationSettings('@mipmap/ic_launcher'), ); await flutterLocalNotificationsPlugin.initialize(initializationSettings);插件内部会映射
AndroidInitializationSettings到鸿蒙槽位(如果你用的是openharmony-sig适配版)。 -
确认插件版本完整适配
你使用的https://gitcode.com/openharmony-sig/fluttertpc_flutter_local_notifications.git是基于Android接口桥接的版本,需检查其ohos目录下是否实现了NotificationManager.addSlot。若缺失,手动在EntryAbility的onCreate中调用原生API创建槽位。
完成以上配置后重新运行,通知通常可正常弹出。

