Flutter 实现消息推送的方法

Flutter 实现消息推送通常有以下几种方式:

1. 使用 Firebase Cloud Messaging (FCM)(推荐)

Firebase Cloud Messaging (FCM) 是 Google 提供的免费推送服务,支持 iOS 和 Android。

实现步骤
(1)配置 Firebase 项目
  • Firebase 控制台 创建一个 Firebase 项目。
  • 添加 Android 和 iOS 应用,并下载 google-services.json (Android) 或 GoogleService-Info.plist (iOS) 文件。
  • 将这些文件放到 android/app/ios/Runner/ 目录中。
(2)安装依赖

pubspec.yaml 中添加:

dependencies:
  firebase_core: latest_version
  firebase_messaging: latest_version

然后运行:

flutter pub get
(3)初始化 Firebase

main.dart 中初始化 Firebase:

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}
(4)请求通知权限
import 'package:firebase_messaging/firebase_messaging.dart';

Future<void> requestPermission() async {
  FirebaseMessaging messaging = FirebaseMessaging.instance;
  NotificationSettings settings = await messaging.requestPermission(
    alert: true,
    announcement: false,
    badge: true,
    carPlay: false,
    criticalAlert: false,
    provisional: false,
    sound: true,
  );

  if (settings.authorizationStatus == AuthorizationStatus.authorized) {
    print('用户已授权');
  } else {
    print('用户拒绝了通知权限');
  }
}
(5)获取 FCM 令牌
FirebaseMessaging messaging = FirebaseMessaging.instance;

void getToken() async {
  String? token = await messaging.getToken();
  print("FCM Token: $token");
}

服务器需要存储该 token 以便后续推送消息。

(6)监听消息
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  print('收到消息: ${message.notification?.title}');
});
(7)配置 Android

android/app/build.gradle

dependencies {
    implementation 'com.google.firebase:firebase-messaging:latest_version'
}
(8)配置 iOS
  • ios/Runner/Info.plist 中添加:
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
  • Runner.xcworkspace 中启用 Push Notifications

2. 使用 OneSignal

如果不想用 Firebase,可以使用 OneSignal,支持更强大的推送功能。

步骤
  1. OneSignal 控制台 注册并创建应用。
  2. pubspec.yaml 添加:
dependencies:
  onesignal_flutter: latest_version
  1. main.dart
import 'package:onesignal_flutter/onesignal_flutter.dart';

void main() {
  OneSignal.shared.setAppId("YOUR_ONESIGNAL_APP_ID");
}
  1. 服务器调用 OneSignal API 发送推送。

3. 使用本地通知 (Flutter Local Notifications)

如果只需要本地通知(不依赖服务器),可以使用 flutter_local_notifications

步骤
  1. pubspec.yaml 添加:
dependencies:
  flutter_local_notifications: latest_version
  1. 初始化:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();

void initNotifications() {
  var androidSettings = AndroidInitializationSettings('@mipmap/ic_launcher');
  var iosSettings = IOSInitializationSettings();
  var initSettings =
      InitializationSettings(android: androidSettings, iOS: iosSettings);

  flutterLocalNotificationsPlugin.initialize(initSettings);
}
  1. 发送本地通知:
Future<void> showNotification() async {
  var androidDetails = AndroidNotificationDetails(
      'channelId', 'channelName',
      importance: Importance.max, priority: Priority.high);
  var iosDetails = IOSNotificationDetails();
  var generalNotificationDetails =
      NotificationDetails(android: androidDetails, iOS: iosDetails);

  await flutterLocalNotificationsPlugin.show(
      0, '测试通知', '这是通知内容', generalNotificationDetails);
}

总结

方式适用场景依赖
Firebase Cloud Messaging (FCM)云端推送,适用于大多数应用firebase_messaging
OneSignal第三方推送,支持多种推送策略onesignal_flutter
本地通知仅用于本地提醒,无需服务器flutter_local_notifications
Flutter 实现后台消息推送通常涉及到使用第三方服务,如Firebase Cloud Messaging (FCM)、OneSignal、Apns(针对iOS)和Gcm(针对Android)。以下是使用Firebase Cloud Messaging(FCM)进行后台推送的基本步骤: 1. **设置 Firebase**: - 注册 Flutter 项目为 Firebase 应用,并下载配置文件。 - 配置 AndroidManifest.xml 和 info.plist 文件,添加必要的权限。 2. **安装 Firebase SDK**: - 在 Flutter 项目中添加 `firebase_messaging` 插件。 ```dart dependencies { ... implementation 'com.google.firebase:firebase-messaging:23.0.1' ... } ``` 3. **初始化 Firebase**: - 在 `main.dart` 中初始化 FirebaseMessaging 类并注册设备。 ```dart void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(_onBackgroundMessage); runApp(MyApp()); } Future<void> _onBackgroundMessage(RemoteMessage message) async { // 处理后台接收到的消息 } ``` 4. **监听消息**: - 在 `FirebaseMessaging` 中监听消息到达和点击事件。 ```dart FirebaseMessaging.onMessage.listen((RemoteMessage message) { // 处理前台接收到的消息 }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage openedMessage) { // 当应用因用户点击消息而打开时的回调 }); ``` 5. **设置推送通知**: - 如果需要,设置通知的显示样式和行为。 6. **发送推送**: - 使用 Firebase 控制台或 API 发送推送消息,指定接收者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值