Flutter如何集成极光推送

在Flutter项目中集成极光推送时遇到问题,按照官方文档配置后仍然无法接收推送通知。具体步骤包括:添加jpush_flutter依赖、配置AndroidManifest.xml和AppDelegate.swift,但调试时发现设备始终无法注册成功。想问下还需要检查哪些关键配置?是否有完整的成功案例可以参考?iOS和Android的配置差异需要注意什么?

2 回复

Flutter集成极光推送步骤如下:

  1. 安装插件:在pubspec.yaml中添加jpush_flutter依赖。
  2. 配置项目:按平台配置Android和iOS的推送证书及权限。
  3. 初始化:在代码中初始化JPush并设置监听。
  4. 处理消息:实现接收和处理推送消息的逻辑。

详细步骤参考官方文档。

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


在Flutter中集成极光推送,可以通过官方提供的jpush_flutter插件实现。以下是详细步骤:

1. 添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  jpush_flutter: ^2.2.0  # 检查最新版本

运行 flutter pub get 安装。

2. 平台配置

Android 配置:

  • android/app/src/main/AndroidManifest.xml 中添加权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  • 在极光官网注册应用,获取 AppKey,并配置在 AndroidManifest.xml<application> 标签内:
<meta-data
    android:name="JPUSH_CHANNEL"
    android:value="developer-default" />
<meta-data
    android:name="JPUSH_APPKEY"
    android:value="你的AppKey" />

iOS 配置:

  • ios/Runner/Info.plist 中添加:
<key>JPUSHChannel</key>
<string>developer-default</string>
<key>JPUSHAppKey</key>
<string>你的AppKey</string>
  • 启用推送权限:在 Xcode 中为项目添加 Push Notifications 能力。

3. Flutter 代码集成

main.dart 中初始化并监听推送:

import 'package:jpush_flutter/jpush_flutter.dart';

final JPush jpush = JPush();

void main() {
  // 初始化
  jpush.setup(
    appKey: '你的AppKey',
    channel: "developer-default",
    production: false, // 是否生产环境
  );

  // 监听推送
  jpush.addEventHandler(
    onReceiveNotification: (Map<String, dynamic> message) async {
      print("接收到推送: $message");
    },
    onOpenNotification: (Map<String, dynamic> message) async {
      print("点击通知打开应用: $message");
    },
  );

  runApp(MyApp());
}

4. 测试推送

  • 在极光控制台发送测试推送,确保设备能正常接收。
  • 使用以下代码获取 RegistrationID(设备标识):
String? registrationId = await jpush.getRegistrationID();

注意事项

  • iOS 需配置证书:在苹果开发者中心创建推送证书,并上传到极光后台。
  • 权限处理:Android 6.0+ 需动态申请权限,iOS 需用户授权。
  • 生产环境:上线时设置 production: true

完成以上步骤后,即可在 Flutter 应用中集成极光推送功能。

回到顶部