Flutter如何集成华为推送
在Flutter项目中如何集成华为推送服务?我已经按照官方文档添加了相关依赖和配置,但推送功能仍然无法正常工作。具体遇到了以下问题:
- 集成后收不到任何推送消息,日志也没有报错信息;
- 华为推送的DeviceToken获取不到,返回为空;
- 是否需要额外在华为开发者平台配置什么?
 有没有完整的集成步骤或常见问题解决方案?求大佬指点!
        
          2 回复
        
      
      
        Flutter集成华为推送步骤如下:
- 安装huawei_push插件。
- 在AndroidManifest.xml配置AppGallery Connect的配置信息。
- 初始化推送服务并处理Token和消息接收。
- 在华为开发者平台创建项目并配置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 捕获错误信息。
 
        
       
             
             
            

