Flutter消息推送插件unify_fcm的使用
Flutter消息推送插件unify_fcm的使用
Unify库 由UNICODE团队打造。
轻量级的Flutter包,用于通过Firebase Cloud Messaging (FCM) v1 API发送远程推送通知,并从服务账户生成访问令牌。阿拉伯文祝福:🇸🇦💙🇧🇩❤️🇪🇬
特性支持
- 访问令牌:您可以使用项目的服务账户JSON文件创建Bearer访问令牌。
- 文本通知:发送带有标题和正文的常规文本通知 📲。
- 图像通知:如果您的应用支持图像通知,您还可以发送图像 😉。
- 主题通知:向订阅了该主题的所有用户发送通知 📬。
开始使用
请参阅我们的示例项目以更好地理解实现方法。
在main.dart
文件中初始化插件以发送通知
// 初始化插件
UnifyServices.initUnify(
config: UnifyConfig(
fcmAccessToken: "your_fcm_access_token_here", // FCM访问令牌
projectName: "your_firebase_project_name_here", // 你的Firebase项目名称
),
);
生成Bearer访问令牌
// 生成访问令牌
String? token = await UnifyServices.genTokenFromServiceAcc(
serviceAccount: {
"type": "service_account",
"project_id": "", // 项目ID
"private_key_id": "", // 私钥ID
"private_key": "", // 私钥
"client_email": "", // 客户端邮箱
"client_id": "", // 客户端ID
"auth_uri": "https://accounts.google.com/o/oauth2/auth", // 授权URI
"token_uri": "https://oauth2.googleapis.com/token", // 令牌URI
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", // 授权提供商X509证书URL
"client_x509_cert_url": "", // 客户端X509证书URL
"universe_domain": "googleapis.com" // 宇宙域
},
);
使用FCM令牌发送通知
// 发送通知到用户
String? id = await UnifyServices.sendNotification(
notification: UnifyNoficationModel(
token: "your_user_fcm_token_here", // 用户FCM令牌
notifyId: "1", // 通知ID
title: "Hi Unify Fan :)", // 通知标题
body: "Let's go to the Unify world ^_^", // 通知正文
imageUrl: "https://images.pexels.com/photos/9551192/pexels-photo-9551192.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", // 图像URL
),
);
向主题频道发送通知
// 发送通知到主题频道
String? id = await UnifyServices.sendNotification(
notification: UnifyNoficationModel(
topic: "your_topic_name_here", // 主题名称
notifyId: "1", // 通知ID
title: "Hi Unify Fans :)", // 通知标题
body: "Let's go to the Unify world ^_^", // 通知正文
imageUrl: "https://images.pexels.com/photos/9551192/pexels-photo-9551192.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", // 图像URL
),
);
如果你喜欢它,请给它一个星⭐️和赞👍🏻。更多艺术作品和手工艺品,请访问我们的团队:UNICODE团队。下次再见,继续编码并保持出色😉。
示例代码
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:unify_fcm/unify_fcm.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化插件
UnifyServices.initUnify(
config: UnifyConfig(
fcmAccessToken: "your_fcm_access_token_here", // FCM访问令牌
projectName: "your_firebase_project_name_here", // 你的Firebase项目名称
),
);
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("Unify Example"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
const Text('欢迎来到Unify世界 ;)'),
const SizedBox(height: 50),
ElevatedButton(
child: const Text("生成令牌"),
onPressed: () async {
String? token = await UnifyServices.genTokenFromServiceAcc(
serviceAccount: {
"type": "service_account",
"project_id": "", // 项目ID
"private_key_id": "", // 私钥ID
"private_key": "", // 私钥
"client_email": "", // 客户端邮箱
"client_id": "", // 客户端ID
"auth_uri": "https://accounts.google.com/o/oauth2/auth", // 授权URI
"token_uri": "https://oauth2.googleapis.com/token", // 令牌URI
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", // 授权提供商X509证书URL
"client_x509_cert_url": "", // 客户端X509证书URL
"universe_domain": "googleapis.com" // 宇宙域
},
);
log(token ?? "");
},
),
const SizedBox(height: 10),
ElevatedButton(
child: const Text("发送测试通知"),
onPressed: () async {
String? id = await UnifyServices.sendNotification(
notification: UnifyNoficationModel(
token: "your_user_fcm_token_here", // 用户FCM令牌
notifyId: "1", // 通知ID
title: "Hi Unify Fan :)", // 通知标题
body: "Let's go to the Unify world ^_^", // 通知正文
imageUrl: "https://images.pexels.com/photos/9551192/pexels-photo-9551192.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", // 图像URL
),
);
debugPrint("消息ID: $id");
},
)
],
),
),
),
);
}
}
更多关于Flutter消息推送插件unify_fcm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter消息推送插件unify_fcm的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用unify_fcm
插件来实现消息推送的示例代码。这个插件结合了Firebase Cloud Messaging (FCM) 服务,可以方便地在Flutter应用中实现消息推送功能。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加unify_fcm
依赖:
dependencies:
flutter:
sdk: flutter
unify_fcm: ^latest_version # 请替换为最新的版本号
然后运行flutter pub get
来安装依赖。
2. 配置Firebase
在Firebase控制台中为你的应用创建一个项目,并下载google-services.json
文件,将其放置在android/app/
目录下。
对于iOS,你需要配置AppDelegate.swift
或AppDelegate.m
文件,并下载GoogleService-Info.plist
文件,将其放置在ios/Runner/
目录下。
3. 初始化unify_fcm
在你的Flutter应用的入口文件(通常是main.dart
)中初始化unify_fcm
:
import 'package:flutter/material.dart';
import 'package:unify_fcm/unify_fcm.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化FCM
await UnifyFcm.instance.initialize(
android: AndroidInitializationSettings(
defaultChannelKey: 'default_channel', // 替换为你的默认通知渠道ID
defaultChannelName: 'Default Channel', // 替换为你的默认通知渠道名称
defaultChannelDescription: 'Default Channel Description', // 替换为你的默认通知渠道描述
defaultChannelImportance: Importance.max, // 设置通知的重要性
),
ios: IOSInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
),
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
// 监听FCM消息
UnifyFcm.instance.onMessageReceived.listen((RemoteMessage message) {
print('收到消息: ${message.data}');
// 在这里处理收到的消息
});
// 监听FCM通知点击事件
UnifyFcm.instance.onMessageOpenedApp.listen((RemoteMessage message) {
print('用户点击了通知: ${message.data}');
// 在这里处理用户点击通知后的逻辑
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter FCM Demo'),
),
body: Center(
child: Text('等待消息推送...'),
),
);
}
}
4. 发送测试消息
你可以使用Firebase控制台发送测试消息到你的设备,确保你的设备已经注册到Firebase项目中,并且FCM插件已经正确配置。
注意事项
- 确保你的Firebase项目配置正确,包括下载并放置正确的配置文件。
- 在iOS上,你可能需要在Xcode中进行额外的配置,比如启用Background Modes中的Remote Notifications。
- 在Android上,确保你的应用有必要的权限,比如
INTERNET
和ACCESS_NETWORK_STATE
。
这个示例代码展示了如何在Flutter中使用unify_fcm
插件来初始化FCM服务,并监听消息接收和通知点击事件。根据你的需求,你可以进一步扩展这个示例,比如处理不同类型的数据消息、显示本地通知等。