Flutter如何实现本地推送
在Flutter中如何实现本地推送功能?我尝试使用flutter_local_notifications插件,但不知道如何配置通知的图标、声音和点击事件。具体需要修改Android的Manifest文件吗?iOS端是否需要额外设置?希望有完整的代码示例说明如何触发定时推送和点击跳转逻辑。
2 回复
Flutter中实现本地推送可使用flutter_local_notifications插件。步骤如下:
- 添加依赖到pubspec.yaml。
- 初始化插件并请求通知权限。
- 配置通知渠道(Android)与权限(iOS)。
- 使用show方法触发本地推送。 支持定时推送和自定义样式。
更多关于Flutter如何实现本地推送的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现本地推送,推荐使用 flutter_local_notifications 插件。以下是详细步骤:
1. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
flutter_local_notifications: ^16.3.0
2. 配置平台设置
Android 配置
- 在
android/app/src/main/AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
iOS 配置
- 在
ios/Runner/Info.plist中添加:
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
3. 初始化插件
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin notificationsPlugin =
FlutterLocalNotificationsPlugin();
void initializeNotifications() async {
const AndroidInitializationSettings androidSettings =
AndroidInitializationSettings('@mipmap/ic_launcher');
const DarwinInitializationSettings iosSettings =
DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
const InitializationSettings settings = InitializationSettings(
android: androidSettings,
iOS: iosSettings,
);
await notificationsPlugin.initialize(settings);
}
4. 请求权限(iOS)
await notificationsPlugin
.resolvePlatformSpecificImplementation<
DarwinFlutterLocalNotificationsPlugin>()
?.requestPermissions(
alert: true,
badge: true,
sound: true,
);
5. 显示本地推送
Future<void> showNotification() async {
const AndroidNotificationDetails androidDetails =
AndroidNotificationDetails(
'channel_id',
'Channel Name',
channelDescription: 'Channel Description',
importance: Importance.max,
priority: Priority.high,
);
const DarwinNotificationDetails iosDetails =
DarwinNotificationDetails();
const NotificationDetails details = NotificationDetails(
android: androidDetails,
iOS: iosDetails,
);
await notificationsPlugin.show(
0, // 通知ID
'通知标题',
'通知内容',
details,
);
}
6. 定时推送示例
await notificationsPlugin.zonedSchedule(
0,
'定时通知',
'这是预定时间的通知',
tz.TZDateTime.now(tz.local).add(const Duration(seconds: 5)),
const NotificationDetails(
android: AndroidNotificationDetails(
'channel_id',
'Channel Name',
),
),
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);
注意事项:
- Android 8.0+ 需要创建通知渠道
- iOS 需要真机测试推送功能
- 定时推送需要添加
timezone依赖处理时区
通过以上步骤即可在Flutter应用中实现本地推送功能。

