Flutter如何集成华为推送

在Flutter项目中如何集成华为推送服务?我已经按照官方文档添加了相关依赖和配置,但推送功能仍然无法正常工作。具体遇到了以下问题:

  1. 集成后收不到任何推送消息,日志也没有报错信息;
  2. 华为推送的DeviceToken获取不到,返回为空;
  3. 是否需要额外在华为开发者平台配置什么?
    有没有完整的集成步骤或常见问题解决方案?求大佬指点!
2 回复

Flutter集成华为推送步骤如下:

  1. 安装huawei_push插件。
  2. AndroidManifest.xml配置AppGallery Connect的配置信息。
  3. 初始化推送服务并处理Token和消息接收。
  4. 在华为开发者平台创建项目并配置SHA256证书指纹。

更多关于Flutter如何集成华为推送的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中集成华为推送(HMS Push Kit),可以通过官方提供的hms_push插件实现。以下是详细步骤:

1. 环境配置

前置条件

  • 安装Flutter SDK
  • 华为开发者账号(完成实名认证)
  • 在AppGallery Connect中创建应用并启用推送服务

2. 添加依赖

pubspec.yaml 中添加:

dependencies:
  huawei_push: ^6.3.0+300

运行 flutter pub get 安装依赖。

3. 配置Android项目

  • android/app/build.gradle 中设置签名证书指纹(与AGC中配置一致)
  • 下载 agconnect-services.json 文件,放到 android/app/ 目录

4. 权限配置

android/app/src/main/AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/>

5. 初始化代码

main.dart 中初始化

import 'package:huawei_push/huawei_push.dart';

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

void initPush() async {
  Push.setAutoInitEnabled(true); // 开启自动初始化
  try {
    await Push.turnOnPush(); // 开启推送
    String token = await Push.getToken(); // 获取设备Token
    print("Push Token: $token");
  } on Exception catch (e) {
    print("Push初始化失败: $e");
  }
}

6. 处理消息接收

配置消息监听

void initPushListener() {
  // 监听Token获取
  Push.getTokenStream.listen((token) {
    print("Token: $token");
    // 发送Token到您的服务器
  });

  // 监听透传消息
  Push.onMessageReceivedStream.listen((event) {
    print("收到透传消息: ${event.data}");
  });

  // 监听通知栏消息点击
  Push.onNotificationOpenedAppStream.listen((event) {
    print("通知被点击: ${event.data}");
  });
}

7. 注意事项

  • 兼容性:确保设备已安装HMS Core(华为移动服务)
  • 调试:使用真机测试,模拟器不支持HMS
  • 数据格式:透传消息通过 event.data 获取,需自行解析JSON

8. 扩展功能

  • 使用 Push.subscribe(topic) 实现主题订阅
  • 通过 Push.setNotificationBadgeIcon 设置角标图标

完成以上步骤后,即可通过华为推送后台向应用发送测试消息。如果遇到问题,可查看华为官方文档或使用 Push.getExceptionStream 捕获错误信息。

回到顶部