Flutter Android极光推送配置与调试
在Flutter项目中集成极光推送时,按照官方文档配置了Android端的JPush相关参数,但始终收不到测试通知。具体现象如下:
- 已在
AndroidManifest.xml
中正确配置了APP_KEY和渠道,并添加了所需的权限和JPushActivity
; - 代码中调用
jpush.setup
初始化成功,且getRegistrationID
能返回有效值; - 极光后台显示消息推送成功,但手机端无通知栏展示(确认非厂商通道问题)。
排查过程中发现:
- 测试设备网络正常,且未开启省电模式;
- 尝试关闭Flutter的Firebase插件冲突,问题依旧。
疑问:
- 是否需要额外配置
NotificationChannel
或检查特定系统权限? - 如何进一步验证极光SDK与Flutter插件的兼容性?
- 是否有常见的日志过滤关键字可定位问题?
更多关于Flutter Android极光推送配置与调试的实战教程也可以访问 https://www.itying.com/category-92-b0.html
3 回复
首先,在极光官网注册应用并获取AppKey。在Flutter项目中添加jpush_flutter
插件。
-
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>
-
初始化:在
MainActivity.java
的onCreate
方法中初始化极光推送:JPushInterface.setDebugMode(true); JPushInterface.init(this);
-
调试:运行应用时检查日志输出,确保推送服务正常启动。使用极光推送提供的测试工具发送通知,并在应用中监听回调:
JPush.instance.init(); JPush.instance.onReceiveNotification((Map<String, dynamic> message) { print("Received notification: $message"); });
注意,7.0及以上版本需要在清单文件中设置android:foregroundServiceType="location|dataSync"
,以避免系统限制。
Flutter 极光推送(JPush) Android配置指南
基本配置步骤
-
添加依赖 在
pubspec.yaml
中添加:dependencies: jpush_flutter: ^2.2.5
-
Android配置
- 在
android/app/build.gradle
中:
defaultConfig { ... manifestPlaceholders = [ JPUSH_PKGNAME: applicationId, JPUSH_APPKEY: "你的极光推送AppKey", // 从极光后台获取 JPUSH_CHANNEL: "developer-default", // 渠道名 ] }
- 在
-
AndroidManifest配置 在
AndroidManifest.xml
中添加:<meta-data android:name="JPUSH_CHANNEL" android:value="${JPUSH_CHANNEL}" /> <meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}" />
调试方法
-
初始化代码
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"); }
-
常见调试命令
- 查看日志:
adb logcat | grep JPush
- 测试推送:可在极光控制台发送测试推送,或使用极光API
- 查看日志:
常见问题
-
收不到推送
- 检查AppKey是否正确
- 检查设备网络连接
- 确认AndroidManifest配置正确
-
点击通知无反应
- 确保已正确设置onOpenNotification回调
- 检查是否在后台被杀进程
-
获取不到RegistrationID
- 通常需要等待几秒钟初始化
- 确保网络通畅
如需更详细配置,请参考极光推送官方文档。