Flutter如何集成极光离线推送
在Flutter项目中集成极光离线推送时,按照官方文档配置后收不到推送通知。具体步骤包括:
- 在
pubspec.yaml添加了jpush_flutter插件 - 配置了Android的
build.gradle和AndroidManifest.xml - iOS端添加了推送证书和Capability
但测试时Android/iOS均无反应,日志显示注册成功但收不到通知。是否遗漏了关键步骤?求排查思路或完整示例代码。
2 回复
Flutter集成极光离线推送步骤:
- 添加
jpush_flutter依赖到pubspec.yaml - 配置Android的JPush配置(AppKey等)
- 配置iOS的推送证书和权限
- 初始化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);
完成以上步骤后,通过极光后台发送推送即可测试。建议真机测试推送功能,模拟器可能无法正常接收。

