Flutter实现消息推送通知:使用firebase_messaging插件

梦想实践者 2021-11-02 ⋅ 24 阅读

在移动应用开发中,消息推送通知是与用户互动的重要组成部分。Flutter提供了许多插件来简化实现消息推送功能,其中最常用的是firebase_messaging插件。firebase_messaging插件允许开发者将Firebase云服务与Flutter应用集成,实现消息推送通知功能。

准备工作

在开始之前,你需要安装和配置Firebase账户。具体步骤如下:

  1. 在Firebase控制台(https://console.firebase.google.com/)创建一个新项目。
  2. 在项目设置中,选择"Cloud Messaging"选项卡,并启用“推送通知”功能。
  3. 下载和保存生成的google-services.json文件,并将其添加到Flutter应用的根目录中。

集成firebase_messaging插件

接下来,我们将在Flutter应用中集成firebase_messaging插件。请按照以下步骤进行操作:

  1. 在pubspec.yaml文件中添加firebase_messaging插件的依赖:
dependencies:
  firebase_messaging: ^8.0.0
  1. 运行flutter pub get命令来获取插件的最新版本。

  2. 在main.dart文件中导入插件:

import 'package:firebase_messaging/firebase_messaging.dart';
  1. 初始化和配置FirebaseMessaging对象:
FirebaseMessaging messaging = FirebaseMessaging.instance;

void main() async {
  // 初始化FirebaseApp
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // 配置FirebaseMessaging实例
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  
  // 监听消息推送事件
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    print('收到新消息: ${message.notification.body}');
  });
  
  // 获取设备推送token
  String? token = await messaging.getToken();
  print('设备推送token: $token');
  
  runApp(MyApp());
}
  1. 在Android的main文件中设置引擎和后台消息处理:
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  print('后台消息: ${message.notification!.body}');
  
  // TODO: 处理后台消息
}

void main() {
  // 省略其他代码...
  
  // 设置引擎和后台消息处理
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  
  // 省略其他代码...
}
  1. 在iOS的AppDelegate文件中添加推送通知相关配置:
#import <Firebase.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // 省略其他代码...
  
  // 配置FirebaseApp
  [FIRApp configure];
  
  // 通过UNUserNotificationCenterDelegate处理通知
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  
  // 请求推送通知权限
  UNAuthorizationOptions authOptions =
      UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound |
      UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) {
    // 省略回调代码...
  }];
  
  // 注册设备Token
  [[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
    // 将token发送到自己的服务器
    NSLog(@"设备推送token: %@", token);
  }];
  
  // 省略其他代码...
}
@end

发送推送通知

现在我们已经集成了firebase_messaging插件并配置好了推送通知功能,接下来让我们了解如何发送推送通知。

你可以选择使用Firebase控制台发送通知,也可以通过调用后台API发送通知。为了简单起见,我们将使用Firebase控制台发送通知。

请按照以下步骤发送推送通知:

  1. 在Firebase控制台打开你的项目。

  2. 在左侧菜单中选择“Cloud Messaging”。

  3. 点击“发送测试消息”,输入标题和内容,点击“发送消息”。

  4. 打开Flutter应用,在日志输出中查看收到的消息。

结语

使用firebase_messaging插件,我们可以轻松地在Flutter应用中实现消息推送通知功能。本篇博客介绍了如何集成插件,配置Firebase服务,并发送测试通知。希望本篇博客对您有帮助,祝您使用Flutter开发愉快!


全部评论: 0

    我有话说: