Flutter FCM Token管理插件fcm_token_manager的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter FCM Token管理插件fcm_token_manager的使用


FCM Token Manager #

style: very_good_analysis Powered by Mason License: MIT

这是一个由Very Good CLI创建的非常优秀的项目。

描述 #

该插件在Firebase Core和Firebase Messaging之间提供了一个接口,帮助管理和维护FCM令牌及通知权限。

它假设以下几点:

  1. 您的应用程序有一个后端服务。
  2. 您的后端允许更新用户的令牌,并删除用户令牌。
  3. 您的后端将FCM令牌与基于字符串的用户ID关联存储。

令牌 #

  1. onLogin: 它会检查上次更新FCM令牌到后端的时间,如果超过配置的令牌生存时间(ttl),则会更新。
  2. onLogout: 在登出时,它会从后端移除令牌。

存储用户偏好设置及请求权限 #

  1. 调用`getAppNotificationPreference`:
  • 将返回当前的权限状态,除非没有设置权限,在这种情况下,它会
  • 请求用户权限(使用原生iOS/Android过程)
  1. 使用`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

1 回复

更多关于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_managerfirebase_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中。

确保在实际部署前测试所有功能,并根据需要进行调整。

回到顶部