Flutter推送通知实现 本地与远程通知配置
在Flutter中实现推送通知时,本地通知和远程通知的具体配置步骤是什么?
我尝试使用firebase_messaging插件配置远程通知,但收不到推送,检查了Firebase后台配置和SHA1证书都没问题,可能是什么原因?
本地通知用flutter_local_notifications插件时,如何在Android和iOS上统一设置通知图标?特别是Android的默认白色图标经常不显示。
测试时发现iOS模拟器收不到远程推送,真机测试却正常,这是模拟器限制还是配置问题?
远程通知后台唤醒应用的处理逻辑应该写在哪里?是否需要单独处理kill状态下的通知点击?
作为一个屌丝程序员,我可以分享下Flutter推送通知的实现方法:
-
本地通知:使用
flutter_local_notifications
插件。首先添加依赖,然后初始化,比如设置渠道(Android)和图标等。发送通知时调用show()
方法,传入标题、内容和时间即可。 -
远程通知:
- Android:需要在
AndroidManifest.xml
中声明FirebaseMessaging
服务,并在build.gradle
里配置google-services
插件。接收消息需重写onMessage()
、onBackgroundMessage()
等方法。 - iOS:需要配置APNs证书,在Xcode中设置Bundle ID并启用Push Notifications能力。在Flutter端,使用
firebase_messaging
插件监听消息。 - 后端:通过Fcm或APNs发送远程通知。
- Android:需要在
记住,iOS对推送要求严格,确保域名加了Apple推送通知服务白名单。别忘了测试各种场景下的消息接收情况!
更多关于Flutter推送通知实现 本地与远程通知配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
作为屌丝程序员,我来简单说下Flutter推送通知的本地和远程通知配置。
-
本地通知:使用
flutter_local_notifications
插件。- 配置Android:在
AndroidManifest.xml
中添加权限和接收器。 - 初始化插件,在需要的地方创建通知:例如
await flutterLocalNotificationsPlugin.show(0, '标题', '内容', payload);
- iOS直接初始化即可,无需额外配置。
- 配置Android:在
-
远程通知:
- 需要后端发送通知,前端需配置
firebase_messaging
插件。 - Android:在
AndroidManifest.xml
添加服务,获取FCM Token。 - iOS:配置APNs,设置
GoogleService-Info.plist
,并请求通知权限。 - 示例代码:
FirebaseMessaging messaging = FirebaseMessaging.instance; String token = await messaging.getToken(); messaging.setForegroundNotificationPresentationOptions(alert: true); messaging.onMessage.listen((RemoteMessage message) { print(message.notification?.title); });
- 注意:确保前后端都正确配置Firebase服务。
- 需要后端发送通知,前端需配置
屌丝程序员表示,这个配置还是有点复杂,但网上资料很多,慢慢啃吧!
Flutter 推送通知实现:本地与远程通知配置
在Flutter中实现推送通知主要涉及本地通知和远程(Firebase)通知两种方式。以下是基本配置方法:
本地通知实现
使用flutter_local_notifications
插件:
// 添加依赖到pubspec.yaml
// flutter_local_notifications: ^latest_version
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> initLocalNotifications() async {
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
final InitializationSettings initializationSettings =
InitializationSettings(android: initializationSettingsAndroid);
await flutterLocalNotificationsPlugin.initialize(
initializationSettings,
);
}
Future<void> showLocalNotification() async {
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails(
'your_channel_id',
'your_channel_name',
importance: Importance.max,
priority: Priority.high,
);
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
'本地通知标题',
'本地通知内容',
platformChannelSpecifics,
);
}
远程通知实现(Firebase)
使用firebase_messaging
插件:
// 添加依赖
// firebase_core: ^latest_version
// firebase_messaging: ^latest_version
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
Future<void> initFirebaseMessaging() async {
await Firebase.initializeApp();
FirebaseMessaging messaging = FirebaseMessaging.instance;
// 获取FCM token
String? token = await messaging.getToken();
print("FCM Token: $token");
// 请求通知权限
NotificationSettings settings = await messaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
// 监听消息
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('收到前台消息: ${message.notification?.title}');
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('通过通知打开的App: ${message.notification?.title}');
});
}
后台消息处理
在android/app/src/main/AndroidManifest.xml
中添加:
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
创建对应的服务类处理后台消息。
记得在pubspec.yaml中添加所需依赖并运行flutter pub get
。对于iOS,还需要在Xcode中配置推送通知能力。