Flutter教程Android极光推送的配置
在Flutter项目中配置Android极光推送时,遇到了几个问题需要请教:
- 按照官方文档集成JPush插件后,Android端始终收不到推送通知,但iOS正常。已在
AndroidManifest.xml
中配置了AppKey和渠道,是否需要额外设置? - 测试推送时,后台显示消息已送达,但手机状态栏不显示通知。是否必须配置
NotificationChannel
?如何正确设置优先级和分类? - 在华为设备上,关闭应用后无法接收推送(其他品牌正常),是否需要单独集成华为推送通道?具体如何兼容?
- 本地调试时Logcat打印
Registration ID
为空,但未发现明显错误日志。可能是什么原因导致的?
更多关于Flutter教程Android极光推送的配置的实战教程也可以访问 https://www.itying.com/category-92-b0.html
3 回复
首先,在极光推送官网注册账号并创建应用,获取AppKey。接着,在Flutter项目中添加flutter_local_notifications
和jpush_flutter
插件。
- 初始化:在主文件中调用
JPUSH.init()
初始化推送服务。 - 设置别名与标签:通过
JPUSH.setAlias()
和JPUSH.setTags()
设置用户相关信息。 - 接收通知:重写
onReceiveNotificationMessage
方法处理通知。 - Android配置:
- 在
AndroidManifest.xml
中添加权限与服务。 - 设置
<meta-data android:name="JPUSH_APPKEY" ... />
。 - 配置
android:protectionLevel="signature"
的广播接收器。
- 在
- 测试推送:使用极光后台发送通知,检查应用是否正确接收。
记得测试时清理应用缓存,确保推送机制正常工作。
更多关于Flutter教程Android极光推送的配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
配置Flutter项目中的极光推送(JPush)分为客户端和服务器端两部分:
1. 客户端配置(Android):
- 添加依赖:在
pubspec.yaml
中加入jpush_flutter
插件。 - AndroidManifest.xml配置:添加权限、注册广播接收器,并在application标签内配置
<meta-data>
声明appkey。 - 初始化:在主Activity的onCreate方法中初始化JPush。
2. 服务器端配置:
- 登录极光推送官网,创建应用获取AppKey。
- 使用官方提供的API Key生成服务端SDK。
- 编写后端代码实现消息推送功能。
注意事项:
- 确保包名与签名一致。
- 测试环境与生产环境需分别配置。
- iOS也需要单独配置证书。
Flutter 中配置极光推送(Android)
要在 Flutter 中配置 Android 平台的极光推送(JPush),请按照以下步骤操作:
1. 添加依赖
在 pubspec.yaml
中添加极光推送插件:
dependencies:
jpush_flutter: ^2.3.0 # 请使用最新版本
2. Android配置
修改 AndroidManifest.xml
在 android/app/src/main/AndroidManifest.xml
中添加以下内容:
<!-- 权限 -->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- 极光推送配置 -->
<meta-data
android:name="JPUSH_CHANNEL"
android:value="developer-default" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="your_app_key" /> <!-- 替换为你的AppKey -->
修改 build.gradle
在 android/app/build.gradle
中设置 minSdkVersion 至少为 16:
defaultConfig {
applicationId "your.package.name"
minSdkVersion 16 // 确保至少为16
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
3. 初始化代码
在 Dart 代码中初始化极光推送:
import 'package:jpush_flutter/jpush_flutter.dart';
final JPush jpush = JPush();
void initPlatformState() async {
try {
jpush.addEventHandler(
onReceiveNotification: (Map<String, dynamic> message) async {
print("收到推送: $message");
},
onOpenNotification: (Map<String, dynamic> message) async {
print("点击推送: $message");
},
);
await jpush.setup(
appKey: "your_app_key", // 替换为你的AppKey
channel: "developer-default",
production: false, // 开发环境设为false
);
jpush.applyPushAuthority();
} catch (e) {
print("极光推送初始化失败: $e");
}
}
4. 获取RegistrationID
String registrationId = await jpush.getRegistrationID();
print("设备注册ID: $registrationId");
记得在极光推送官网注册应用并获取AppKey,替换代码中的占位符。测试时可以在极光推送控制台发送测试推送。