Flutter FCM Token管理插件fcm_token_manager的使用
Flutter FCM Token管理插件fcm_token_manager的使用
FCM Token Manager #
这是一个由Very Good CLI创建的非常优秀的项目。
描述 #
该插件在Firebase Core和Firebase Messaging之间提供了一个接口,帮助管理和维护FCM令牌及通知权限。
它假设以下几点:
- 您的应用程序有一个后端服务。
- 您的后端允许更新用户的令牌,并删除用户令牌。
- 您的后端将FCM令牌与基于字符串的用户ID关联存储。
令牌 #
- onLogin: 它会检查上次更新FCM令牌到后端的时间,如果超过配置的令牌生存时间(ttl),则会更新。
- onLogout: 在登出时,它会从后端移除令牌。
存储用户偏好设置及请求权限 #
- 调用`getAppNotificationPreference`:
- 将返回当前的权限状态,除非没有设置权限,在这种情况下,它会
- 请求用户权限(使用原生iOS/Android过程)
- 使用`setAppNotificationPreference`可以允许用户在不使用设备原生设置的情况下关闭通知。
- 这仅仅是调用您的后端来删除FCM令牌。
安装 💻 #
❗ 要开始使用FCM Token Manager,您必须在机器上安装Flutter SDK。
通过`flutter pub add`进行安装:
dart pub add fcm_token_manager
持续集成 🤖 #
FCM Token Manager自带了由Very Good Workflows支持的GitHub Actions工作流,但您也可以添加自己的CI/CD解决方案。
默认情况下,每次拉取请求和推送时,CI都会格式化、静态分析并测试代码。这确保了随着功能的增加或更改,代码保持一致且行为正确。该项目使用Very Good Analysis来进行团队使用的严格分析选项。使用Very Good Workflows来强制执行代码覆盖率。
完整示例代码
首先,确保已经安装了fcm_token_manager
插件:
dart pub add fcm_token_manager
接下来,我们编写一个简单的示例来演示如何使用fcm_token_manager
插件。
示例代码
import 'package:flutter/material.dart';
import 'package:fcm_token_manager/fcm_token_manager.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('FCM Token Manager Example')),
body: Center(child: FcmTokenManagerExample()),
),
);
}
}
class FcmTokenManagerExample extends StatefulWidget {
[@override](/user/override)
_FcmTokenManagerExampleState createState() => _FcmTokenManagerExampleState();
}
class _FcmTokenManagerExampleState extends State<FcmTokenManagerExample> {
String? _token;
bool _isPermissionGranted = false;
[@override](/user/override)
void initState() {
super.initState();
_getTokenAndPermissionStatus();
}
Future<void> _getTokenAndPermissionStatus() async {
final token = await FcmTokenManager.getToken();
setState(() {
_token = token;
});
final isPermissionGranted = await FcmTokenManager.getAppNotificationPreference();
setState(() {
_isPermissionGranted = isPermissionGranted;
});
}
Future<void> _requestPermission() async {
await FcmTokenManager.requestNotificationPermissions();
final isPermissionGranted = await FcmTokenManager.getAppNotificationPreference();
setState(() {
_isPermissionGranted = isPermissionGranted;
});
}
Future<void> _logout() async {
await FcmTokenManager.logout();
final token = await FcmTokenManager.getToken();
setState(() {
_token = token;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('FCM Token: $_token'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _isPermissionGranted ? null : _requestPermission,
child: Text(_isPermissionGranted ? '权限已授予' : '请求权限'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () => _logout(),
child: Text('登出'),
),
],
);
}
}
更多关于Flutter FCM Token管理插件fcm_token_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter FCM Token管理插件fcm_token_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是关于如何在Flutter项目中使用fcm_token_manager
插件来管理FCM(Firebase Cloud Messaging)Token的示例代码。这个插件可以帮助你轻松获取、存储和更新Firebase Cloud Messaging的Token。
首先,确保你的Flutter项目中已经添加了fcm_token_manager
和firebase_messaging
依赖。在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
firebase_core: ^1.10.0 # 确保版本与firebase_messaging兼容
firebase_messaging: ^11.2.0
fcm_token_manager: ^0.1.0 # 请检查最新版本号
然后运行flutter pub get
来安装这些依赖。
接下来,配置Firebase。在Firebase控制台中为你的应用创建项目,并下载google-services.json
文件,将其放置在android/app/
目录下。对于iOS,你需要按照Firebase的iOS集成指南设置项目。
接下来是Flutter代码部分。首先,在main.dart
文件中初始化Firebase并配置fcm_token_manager
:
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:fcm_token_manager/fcm_token_manager.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// 初始化Firebase Messaging
FirebaseMessaging messaging = FirebaseMessaging.instance;
// 配置FCM Token Manager
FCMTokenManager tokenManager = FCMTokenManager(
messaging: messaging,
storage: FlutterSecureStorage(), // 使用FlutterSecureStorage来安全存储Token
);
// 获取Token并监听更新
tokenManager.getToken().then((token) {
if (token != null) {
print("FCM Token: $token");
} else {
print("Failed to get FCM Token.");
}
});
tokenManager.tokenStream.listen((token) {
if (token != null) {
print("FCM Token updated: $token");
} else {
print("FCM Token updated but is null.");
}
});
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('FCM Token Manager Demo'),
),
body: Center(
child: Text('Check console for FCM Token updates.'),
),
),
);
}
}
注意:上面的代码使用了FlutterSecureStorage
来安全地存储FCM Token。你需要添加flutter_secure_storage
依赖:
dependencies:
flutter_secure_storage: ^5.0.2 # 请检查最新版本号
并在pubspec.yaml
文件中运行flutter pub get
来安装。
此外,你需要在android/app/build.gradle
文件中添加以下内容以确保Firebase和依赖正确配置:
apply plugin: 'com.google.gms.google-services'
在android/build.gradle
文件的buildscript
部分添加Google服务插件的类路径:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.10' // 请检查最新版本号
}
}
完成这些步骤后,你的Flutter应用应该能够初始化Firebase,使用fcm_token_manager
获取和监听FCM Token的更新。当Token发生变化时,它会自动更新并存储在FlutterSecureStorage
中。
确保在实际部署前测试所有功能,并根据需要进行调整。