本地通知
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);