Flutter推送通知插件flutter_push_plugin的使用

Flutter推送通知插件flutter_push_plugin的使用

flutter_push_plugin 是一个用于获取原生 deviceToken 的插件。默认情况下它包含了 iOS 平台的支持。如果需要支持 Android 平台,则需要在 pubspec.yaml 文件中添加相应的依赖项。目前该插件支持以下 Android 设备类型:oppovivomeizuhuaweihonor

添加方式

pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_push_plugin: ^0.0.2
  flutter_push_plugin_meizu: ^0.0.1
  flutter_push_plugin_vivo: ^0.0.1
  flutter_push_plugin_oppo: ^0.0.1
  flutter_push_plugin_huawei: ^0.0.1
  flutter_push_plugin_honor: ^0.0.1

然后运行 flutter pub get 来安装这些依赖。

获取 token

要获取 token,可以按照以下步骤进行操作:

  1. 添加监听

    使用 getTokenStream() 方法来监听 token 变化,并将其打印出来。同时更新 UI 显示新的 token。

    // 监听 token 变化
    FlutterPushPlugin.getTokenStream().listen((event) {
      debugPrint('Token: $event'); // 打印 token
      setState(() {
        _text = event; // 更新 UI
      });
    });
    
  2. 注册 token

    调用 registerToken() 方法来注册 token。

    // 注册 token
    FlutterPushPlugin.registerToken();
    
  3. 获取当前平台

    使用 getPlatform() 方法来获取当前运行的平台。

    // 获取当前平台
    String? platform = await FlutterPushPlugin.getPlatform();
    debugPrint('Current Platform: $platform'); // 打印当前平台
    

完整示例 Demo

以下是一个完整的示例,展示了如何使用 flutter_push_plugin 插件来获取和显示 token。

import 'package:flutter/material.dart';
import 'package:flutter_push_plugin/flutter_push_plugin.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PushNotificationScreen(),
    );
  }
}

class PushNotificationScreen extends StatefulWidget {
  [@override](/user/override)
  _PushNotificationScreenState createState() => _PushNotificationScreenState();
}

class _PushNotificationScreenState extends State<PushNotificationScreen> {
  String? _text;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 监听 token 变化
    FlutterPushPlugin.getTokenStream().listen((event) {
      debugPrint('Token: $event'); // 打印 token
      setState(() {
        _text = event; // 更新 UI
      });
    });

    // 注册 token
    FlutterPushPlugin.registerToken();

    // 获取当前平台
    String? platform = FlutterPushPlugin.getPlatform();
    debugPrint('Current Platform: $platform'); // 打印当前平台
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Push Notification'),
      ),
      body: Center(
        child: Text(_text ?? 'No token yet'),
      ),
    );
  }
}

更多关于Flutter推送通知插件flutter_push_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter推送通知插件flutter_push_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中实现推送通知功能,通常需要使用第三方插件。flutter_push_plugin 是一个用于处理推送通知的插件,它可以帮助你集成 Firebase Cloud Messaging (FCM) 或其他推送服务。以下是如何使用 flutter_push_plugin 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_push_plugin 的依赖。

dependencies:
  flutter:
    sdk: flutter
  flutter_push_plugin: ^latest_version

运行 flutter pub get 以安装依赖。

2. 配置 Firebase

如果你使用的是 Firebase Cloud Messaging (FCM),你需要在 Firebase 控制台中创建一个项目,并将 google-services.json 文件下载到你的 Flutter 项目的 android/app 目录中。

对于 iOS,你需要下载 GoogleService-Info.plist 文件并将其添加到 ios/Runner 目录中。

3. 初始化插件

main.dart 文件中初始化 flutter_push_plugin

import 'package:flutter/material.dart';
import 'package:flutter_push_plugin/flutter_push_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化推送插件
  await FlutterPushPlugin.initialize();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Push Notification',
      home: HomeScreen(),
    );
  }
}

4. 配置 Android 和 iOS

Android

android/app/build.gradle 文件中,确保添加了以下依赖:

dependencies {
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
}

android/build.gradle 文件中,确保添加了以下内容:

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

android/app/build.gradle 文件末尾添加:

apply plugin: 'com.google.gms.google-services'

iOS

ios/Runner/Info.plist 文件中,添加以下权限:

<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

5. 处理推送通知

你可以通过监听 FlutterPushPlugin 的事件来处理接收到的推送通知。

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  void initState() {
    super.initState();
    
    // 监听推送通知
    FlutterPushPlugin.onMessageReceived.listen((message) {
      print("Notification received: $message");
      // 处理通知,例如显示一个 SnackBar 或导航到特定页面
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Push Notification Example'),
      ),
      body: Center(
        child: Text('Push Notification Demo'),
      ),
    );
  }
}

6. 发送测试通知

你可以使用 Firebase 控制台发送测试通知,或者通过编写代码使用 FCM API 发送通知。

7. 处理后台通知

对于后台通知,你可以在 FirebaseMessaging 中配置后台处理逻辑。通常需要在 AndroidManifest.xmlAppDelegate.swift 中进行配置。

8. 权限处理

在 iOS 上,你需要请求用户允许接收通知。你可以使用 flutter_push_plugin 提供的方法来请求权限。

await FlutterPushPlugin.requestPermission();

9. 处理点击通知

你可以通过监听 FlutterPushPluginonNotificationOpenedApp 事件来处理用户点击通知的行为。

FlutterPushPlugin.onNotificationOpenedApp.listen((message) {
  print("Notification opened: $message");
  // 处理点击通知后的行为,例如导航到特定页面
});
回到顶部