Flutter华为推送服务插件flutter_push_plugin_huawei的使用

本文将介绍如何在Flutter项目中使用flutter_push_plugin_huawei插件来实现华为推送服务。通过此插件,您可以轻松地为您的应用添加华为推送功能。

前提条件

在开始之前,请确保您已经完成了以下步骤:

  1. 注册并登录华为开发者联盟
  2. 创建一个华为开发者账号,并创建一个新的应用以获取App ID
  3. 在您的Flutter项目中初始化华为推送服务。

配置华为推送服务

Android配置

  1. android/app/src/main/AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  1. AndroidManifest.xml中添加华为推送服务的配置:
<meta-data
    android:name="push_app_id"
    android:value="您的App ID" />

iOS配置

  1. ios/Runner/Info.plist文件中添加以下键值对:
<key>PushNotificationCertificate</key>
<string>您的推送证书路径</string>
  1. 确保在Xcode中启用推送通知功能。

使用插件flutter_push_plugin_huawei

初始化插件

在Flutter项目的main.dart文件中初始化插件:

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

void main() {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  String _token = '未知';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    String token;
    try {
      token = await FlutterPushPluginHuawei.getPushToken();
    } catch (e) {
      print(e);
    }
    if (!mounted) return;

    setState(() {
      _token = token;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('华为推送插件示例'),
        ),
        body: Center(
          child: Text('推送令牌: $_token\n'),
        ),
      ),
    );
  }
}

处理推送消息

在接收到推送消息时,可以使用onMessage回调函数处理消息:

FlutterPushPluginHuawei.onMessage.listen((message) {
  print('接收到推送消息: $message');
});

处理后台推送消息

当应用在后台时,可以通过onBackgroundMessage回调函数处理消息:

Future<void> backgroundMessageHandler(Map<String, dynamic> message) async {
  print('后台接收到推送消息: $message');
}

FlutterPushPluginHuawei.onBackgroundMessage(backgroundMessageHandler);

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter项目中使用flutter_push_plugin_huawei插件:

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

void main() {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  String _token = '未知';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
    handleMessages();
  }

  Future<void> initPlatformState() async {
    String token;
    try {
      token = await FlutterPushPluginHuawei.getPushToken();
    } catch (e) {
      print(e);
    }
    if (!mounted) return;

    setState(() {
      _token = token;
    });
  }

  void handleMessages() {
    // 处理前台消息
    FlutterPushPluginHuawei.onMessage.listen((message) {
      print('接收到推送消息: $message');
    });

    // 处理后台消息
    FlutterPushPluginHuawei.onBackgroundMessage(backgroundMessageHandler);
  }

  Future<void> backgroundMessageHandler(Map<String, dynamic> message) async {
    print('后台接收到推送消息: $message');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('华为推送插件示例'),
        ),
        body: Center(
          child: Text('推送令牌: $_token\n'),
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_push_plugin_huawei 是一个用于在 Flutter 应用中集成华为推送服务(HMS Push Kit)的插件。通过这个插件,开发者可以轻松地在 Flutter 应用中实现消息推送功能。以下是使用 flutter_push_plugin_huawei 的基本步骤:

1. 安装插件

首先,在 pubspec.yaml 文件中添加 flutter_push_plugin_huawei 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_push_plugin_huawei: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装插件。

2. 配置华为推送服务

2.1 创建华为开发者账号和应用

  1. 登录 华为开发者联盟
  2. 创建一个新项目并添加一个应用。
  3. 在应用详情中启用 Push Kit 服务。

2.2 配置 agconnect-services.json

  1. 在华为开发者联盟中下载应用的 agconnect-services.json 文件。
  2. agconnect-services.json 文件放置在 Flutter 项目的 android/app/ 目录下。

3. 初始化插件

在 Flutter 应用的 main.dart 文件中初始化插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化华为推送插件
  await FlutterPushPluginHuawei.init();
  
  runApp(MyApp());
}

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

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HMS Push Demo'),
      ),
      body: Center(
        child: Text('HMS Push Kit Integration'),
      ),
    );
  }
}

4. 获取设备 Token

在初始化插件后,你可以通过以下方式获取设备的推送 Token:

String token = await FlutterPushPluginHuawei.getToken();
print('Device Token: $token');

5. 处理推送消息

你可以通过监听推送消息来处理接收到的消息:

FlutterPushPluginHuawei.onMessageReceived.listen((Map<String, dynamic> message) {
  print('Received message: $message');
  // 在这里处理接收到的消息
});

6. 处理点击通知栏事件

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

FlutterPushPluginHuawei.onNotificationOpenedApp.listen((Map<String, dynamic> message) {
  print('Notification clicked: $message');
  // 在这里处理用户点击通知的行为
});
回到顶部