Flutter Android极光推送配置与调试

在Flutter项目中集成极光推送时,按照官方文档配置了Android端的JPush相关参数,但始终收不到测试通知。具体现象如下:

  1. 已在AndroidManifest.xml中正确配置了APP_KEY和渠道,并添加了所需的权限和JPushActivity
  2. 代码中调用jpush.setup初始化成功,且getRegistrationID能返回有效值;
  3. 极光后台显示消息推送成功,但手机端无通知栏展示(确认非厂商通道问题)。

排查过程中发现:

  • 测试设备网络正常,且未开启省电模式;
  • 尝试关闭Flutter的Firebase插件冲突,问题依旧。

疑问:

  1. 是否需要额外配置NotificationChannel或检查特定系统权限?
  2. 如何进一步验证极光SDK与Flutter插件的兼容性?
  3. 是否有常见的日志过滤关键字可定位问题?

更多关于Flutter Android极光推送配置与调试的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

配置Flutter Android极光推送(JPush)的步骤如下:

  1. 注册与获取AppKey

    • 在极光官网注册账号并创建应用,获取AppKey。
  2. 添加依赖

    • 打开pubspec.yaml文件,添加jpush_flutter依赖。
      dependencies:
        jpush_flutter: ^2.0.0
      
  3. Android配置

    • 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.WRITE_EXTERNAL_STORAGE"/>
      <service
          android:name="cn.jpush.android.service.PushService"
          android:enabled="true"
          android:exported="false"/>
      
    • MainApplication.java中初始化JPush:
      import cn.jpush.android.api.JPushInterface;
      
      @Override
      protected void onCreate() {
          super.onCreate();
          JPushInterface.setDebugMode(true);
          JPushInterface.init(this);
      }
      
  4. Flutter代码实现

    • 初始化插件:
      import 'package:jpush_flutter/jpush_flutter.dart';
      
      final JPush _jPush = JPush();
      
      Future<void> initPlatformState() async {
        _jPush.setup(
          onReceiveNotification: (Map<String, dynamic> message) async {
            print("Received notification: $message");
          },
          onReceiveMessage: (Map<String, dynamic> message) async {
            print("Received message: $message");
          },
        );
      }
      
  5. 调试与测试

    • 使用真机或模拟器运行应用,确保推送功能正常工作。
    • 检查日志输出,确认接收通知和消息。

完成以上步骤后,即可在Flutter项目中正常使用极光推送功能。

更多关于Flutter Android极光推送配置与调试的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


首先,在极光官网注册应用并获取AppKey。在Flutter项目中添加jpush_flutter插件。

  1. Android 配置:在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.RECEIVE_APN_PUSH" />
    <uses-permission android:name="android.permission.VIBRATE" />
    
    <receiver android:name="cn.jpush.android.JPushBroadcastReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.USER_PRESENT" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
    </receiver>
    
  2. 初始化:在MainActivity.javaonCreate方法中初始化极光推送:

    JPushInterface.setDebugMode(true);
    JPushInterface.init(this);
    
  3. 调试:运行应用时检查日志输出,确保推送服务正常启动。使用极光推送提供的测试工具发送通知,并在应用中监听回调:

    JPush.instance.init();
    JPush.instance.onReceiveNotification((Map<String, dynamic> message) {
        print("Received notification: $message");
    });
    

注意,7.0及以上版本需要在清单文件中设置android:foregroundServiceType="location|dataSync",以避免系统限制。

Flutter 极光推送(JPush) Android配置指南

基本配置步骤

  1. 添加依赖pubspec.yaml 中添加:

    dependencies:
      jpush_flutter: ^2.2.5
    
  2. Android配置

    • android/app/build.gradle 中:
    defaultConfig {
        ...
        manifestPlaceholders = [
            JPUSH_PKGNAME: applicationId,
            JPUSH_APPKEY: "你的极光推送AppKey", // 从极光后台获取
            JPUSH_CHANNEL: "developer-default", // 渠道名
        ]
    }
    
  3. AndroidManifest配置AndroidManifest.xml 中添加:

    <meta-data
        android:name="JPUSH_CHANNEL"
        android:value="${JPUSH_CHANNEL}" />
    <meta-data
        android:name="JPUSH_APPKEY"
        android:value="${JPUSH_APPKEY}" />
    

调试方法

  1. 初始化代码

    import 'package:jpush_flutter/jpush_flutter.dart';
    
    final JPush jpush = JPush();
    
    void initPlatformState() async {
      await jpush.setup(
        appKey: "你的AppKey",
        channel: "developer-default",
        production: false, // 测试环境设为false
        debug: true, // 开启调试模式
      );
      
      // 监听推送事件
      jpush.addEventHandler(
        onReceiveNotification: (Map<String, dynamic> message) async {
          print("收到推送: $message");
        },
        onOpenNotification: (Map<String, dynamic> message) async {
          print("点击推送: $message");
        },
      );
      
      // 获取注册ID
      String? registrationID = await jpush.getRegistrationID();
      print("RegistrationID: $registrationID");
    }
    
  2. 常见调试命令

    • 查看日志:adb logcat | grep JPush
    • 测试推送:可在极光控制台发送测试推送,或使用极光API

常见问题

  1. 收不到推送

    • 检查AppKey是否正确
    • 检查设备网络连接
    • 确认AndroidManifest配置正确
  2. 点击通知无反应

    • 确保已正确设置onOpenNotification回调
    • 检查是否在后台被杀进程
  3. 获取不到RegistrationID

    • 通常需要等待几秒钟初始化
    • 确保网络通畅

如需更详细配置,请参考极光推送官方文档。

回到顶部