跳到主要内容

本地通知

Flutter IMKit 已内置本地通知功能,当您的应用在后台运行时接收到新消息,会自动创建并显示本地通知提醒。

什么是本地通知

本地通知是指应用在前台或后台运行时,由 Flutter IM Kit 直接调用系统接口创建并发送的通知。与远程推送通知不同,本地通知不需要通过推送服务器,直接由应用客户端生成。

使用限制

本地通知只在应用进程存活时有效。如果应用被系统完全终止,需要依赖远程推送通知来提醒用户。

启用本地通知

基本设置

您需要在应用初始化时启用本地通知:

Dart
final engineProvider = Provider.of<RCKEngineProvider>(context, listen: false);

// 启用本地通知
await engineProvider.setupLocalNotification(enable: true);

权限配置

Android 配置

权限要求

在 Android 13(API 33)及以上版本,需要在运行时请求 POST_NOTIFICATIONS 权限。Flutter IM Kit 会自动处理权限请求,但建议您在应用启动时进行权限检查。

android/app/src/main/AndroidManifest.xml 中添加必要权限:

xml
<!-- 本地通知权限 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

iOS 配置

iOS 平台会自动请求通知权限,无需额外配置。

默认通知内容

不同消息类型的默认通知内容:

消息类型通知内容
文本消息显示消息文本内容
图片消息显示"[图片消息]"
语音消息显示"[语音消息]"
文件消息显示"[文件消息]"
其他类型显示"[新消息]"

通知会显示消息来源 ID。如果您设置过自定义信息提供者,则会替换为消息发送者的名字。

动态控制本地通知开关

您可以在应用运行时动态启用或关闭本地通知:

Dart
final engineProvider = Provider.of<RCKEngineProvider>(
navigatorKey.currentContext!,
listen: false
);

// enabled 为 true 时启用本地通知,为 false 时关闭
await engineProvider.setupLocalNotification(enable: enabled);