Flutter如何集成极光离线推送

在Flutter项目中集成极光离线推送时,按照官方文档配置后收不到推送通知。具体步骤包括:

  1. pubspec.yaml添加了jpush_flutter插件
  2. 配置了Android的build.gradleAndroidManifest.xml
  3. iOS端添加了推送证书和Capability
    但测试时Android/iOS均无反应,日志显示注册成功但收不到通知。是否遗漏了关键步骤?求排查思路或完整示例代码。
2 回复

Flutter集成极光离线推送步骤:

  1. 添加jpush_flutter依赖到pubspec.yaml
  2. 配置Android的JPush配置(AppKey等)
  3. 配置iOS的推送证书和权限
  4. 初始化JPush并处理推送消息

注意:iOS需在Xcode中开启Push Notifications能力。

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


在Flutter中集成极光离线推送,主要通过jpush_flutter插件实现。以下是详细步骤:

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  jpush_flutter: ^2.2.0

2. 配置Android端

AndroidManifest.xml 配置:

<!-- 权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- Android 13 需要 -->

<!-- 应用Key -->
<meta-data
    android:name="JPUSH_APPKEY"
    android:value="你的AppKey" />

<!-- 渠道 -->
<meta-data
    android:name="JPUSH_CHANNEL"
    android:value="developer-default" />

自定义Receiver(可选):

<receiver android:name="cn.jpush.android.service.PushReceiver" >
    <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTRATION" />
        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
    </intent-filter>
</receiver>

3. 配置iOS端

Podfile 添加:

target 'Runner' do
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['ENABLE_BITCODE'] = 'NO'
      end
    end
  end
end

Capabilities 开启:

  • Push Notifications
  • Background Modes → Remote notifications

4. Flutter代码集成

import 'package:jpush_flutter/jpush_flutter.dart';

JPush jpush = JPush();

// 初始化
void initJPush() async {
  jpush.setup(
    appKey: "你的AppKey",
    channel: "developer-default",
    production: false, // 开发环境false,生产环境true
  );

  // 监听通知点击
  jpush.addEventHandler(
    onReceiveNotification: (Map<String, dynamic> message) async {
      print("收到通知: $message");
    },
    onOpenNotification: (Map<String, dynamic> message) async {
      print("点击通知: $message");
    },
    onReceiveMessage: (Map<String, dynamic> message) async {
      print("收到自定义消息: $message");
    },
  );
}

// 获取RegistrationID
String? registrationId = await jpush.getRegistrationID();

// 设置标签/别名
jpush.setTags(["tag1", "tag2"]);
jpush.setAlias("alias1");

5. 注意事项

  • Android 13+ 需要动态申请通知权限
  • iOS需在开发者中心配置推送证书
  • 测试时确保应用在后台或杀死状态

6. 调试建议

// 打印推送日志
jpush.setDebugMode(true);

完成以上步骤后,通过极光后台发送推送即可测试。建议真机测试推送功能,模拟器可能无法正常接收。

回到顶部