flutter如何实现本地app推送
在Flutter中如何实现本地App推送功能?我需要在Android和iOS平台上都支持本地通知,不使用第三方推送服务。请问有没有推荐的插件或原生代码实现方式?具体该如何配置和调用?最好能提供简单的示例代码。
2 回复
Flutter 实现本地推送可使用 flutter_local_notifications 插件。配置 Android 和 iOS 权限,初始化插件后调用 show 方法即可触发通知。
更多关于flutter如何实现本地app推送的实战系列教程也可以访问 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 8.0+ 需要通知渠道):
- 在
AndroidManifest.xml添加权限(如果需要声音/振动):
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
iOS:
- 在
Info.plist添加权限描述:
<key>NSUserNotificationsUsageDescription</key>
<string>需要通知权限以展示本地推送</string>
3. 初始化插件
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin notificationsPlugin =
FlutterLocalNotificationsPlugin();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化设置
const AndroidInitializationSettings androidSettings =
AndroidInitializationSettings('@mipmap/ic_launcher'); // 应用图标
const DarwinInitializationSettings iosSettings =
DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
final InitializationSettings initSettings = InitializationSettings(
android: androidSettings,
iOS: iosSettings,
);
await notificationsPlugin.initialize(initSettings);
runApp(MyApp());
}
4. 请求权限(仅 iOS)
// iOS 需要显式请求权限
if (Platform.isIOS) {
await notificationsPlugin
.resolvePlatformSpecificImplementation<
DarwinFlutterLocalNotificationsPlugin>()
?.requestPermissions(
alert: true,
badge: true,
sound: true,
);
}
5. 发送本地推送
Future<void> showNotification() async {
const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
'channel_id', // 渠道ID
'频道名称', // 渠道名称
channelDescription: '频道描述',
importance: Importance.max,
priority: Priority.high,
);
const DarwinNotificationDetails iosDetails = DarwinNotificationDetails();
const NotificationDetails platformDetails = NotificationDetails(
android: androidDetails,
iOS: iosDetails,
);
await notificationsPlugin.show(
0, // 通知ID
'通知标题', // 标题
'通知内容', // 内容
platformDetails,
payload: '附加数据', // 可选,点击通知时传递的数据
);
}
6. 处理通知点击
在初始化时配置点击回调:
await notificationsPlugin.initialize(
initSettings,
onDidReceiveNotificationResponse: (NotificationResponse response) {
// 处理点击事件
if (response.payload != null) {
print('收到附加数据: ${response.payload}');
}
},
);
完整示例
// 在按钮点击时触发
ElevatedButton(
onPressed: showNotification,
child: Text('发送推送'),
)
注意事项
- Android: 确保应用在前台或后台(不需要完全杀死)
- iOS: 模拟器可能无法显示推送,建议使用真机测试
- 可自定义通知图标、声音、振动等参数
通过以上步骤即可实现基本的本地推送功能。

