HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务
HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务
Flutter 鸿蒙开发接入推送服务—极光推送
在本文中,我将讲解如何在Flutter应用中接入极光推送。因为使用Flutter开发鸿蒙原生应用的开发者,大部分是原本有着Android和iOS端应用的用户,极光推送作为推送的头部品牌,可以聚合各个厂商的推送。我也使用的是极光的产品,所以本次以极光推送为例进行讲解。
如果您对Flutter与原生ArkTS交互还不了解,请先阅读:Flutter与原生ArkTS交互实现。
1. 环境配置
1.1 IDE升级
需要将IDE升级至5.0.3.500以上,并在工程级文件「build-profile.json5」中配置「useNormalizedOHMUrl」为“true”:
"products": [
{
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true // 打开
}
},
"name": "default",
"signingConfig": "default",
"compileSdkVersion": "5.0.0(12)",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS"
}
]
1.2 依赖配置
在 entry
模块下的「oh-package.json5」文件中添加极光推送依赖:
"dependencies": {
"@jg/push": "1.1.1"
}
注意:1.1.1为发帖时最新版,请根据需要自行调整版本。
1.3 配置AppGalleryConnect
- 在AppGalleryConnect项目中,开通推送服务。
- 在项目设置中查看应用的Client ID,并在
entry
模块下的「module.json5」文件中添加配置:
"module": {
"metadata": [
{
"name": "client_id",
"value": "你的id"
}
]
}
- 确保应用包名和证书指纹无误的情况下,下载agconnect-services.json,并在极光推送后台上传配置文件。
1.4 创建接收回调消息的类
在鸿蒙原生项目中,创建一个继承于「CallBackMsg」的类,用于接收回调消息。如果不需要,可以先创建一个空的类:
import { CallBackMsg } from '@jg/push';
export class CallBackMessageHandler extends CallBackMsg {
}
2. 实现功能
由于业务较为简单,可以直接在MethodChannelHandler中编写代码:
2.1 获取通知权限
if(call.method=="requestEnableNotification"){
notificationManager.requestEnableNotification().then(() => {
hilog.info(0x0000, "TAG", '%{public}s', `requestEnableNotification success`);
}).catch((err: BusinessError) => {
hilog.error(0x0000, "TAG", '%{public}s', `requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
});
}
2.2 初始化极光推送
if(call.method=="initJPush"){
JPushInterface.setCallBackMsg(new CallBackMessageHandler)
JPushInterface.setAppKey("appkey")
JPushInterface.init(this.context)
}
2.3 获取极光推送注册ID
if(call.method=="getRegistrationID"){
console.log("getRegistrationId:"+JPushInterface.getRegistrationId())
result.success(JPushInterface.getRegistrationId())
}
3. 使用流程
- 用户同意隐私协议后,先向用户申请推送权限。推送权限只能申请一次,无论用户授权与否,再次申请不会弹窗,需要用户自行到设置中手动修改授权。
- 随后初始化极光推送。
- 在Flutter端实现相应逻辑以支持获取注册ID并与原生交互。
以下为Flutter端的Dart代码实现:
import 'package:flutter/services.dart';
class JPushHandler {
static const MethodChannel _channel = MethodChannel('com.example.jpush');
/// 请求通知权限
static Future<void> requestNotificationPermission() async {
try {
await _channel.invokeMethod('requestEnableNotification');
print('Notification permission requested successfully.');
} catch (e) {
print('Failed to request notification permission: $e');
}
}
/// 初始化极光推送
static Future<void> initJPush(String appKey) async {
try {
await _channel.invokeMethod('initJPush');
print('JPush initialized successfully.');
} catch (e) {
print('Failed to initialize JPush: $e');
}
}
/// 获取注册ID
static Future<String?> getRegistrationId() async {
try {
final String? registrationId = await _channel.invokeMethod('getRegistrationID');
print('Registration ID: $registrationId');
return registrationId;
} catch (e) {
print('Failed to get registration ID: $e');
return null;
}
}
}
- 在需要时,可以通过「getRegistrationId」获取用户设备在极光推送中的注册ID,并进行相应存储,用于对用户的单独消息推送(如订单信息、物流状态等)。
关于极光推送使用rid推送消息的方式,可以参照极光官方文档在后端实现。 点击推送消息跳转页面或做出其他操作的相关内容会在后续奉上
更多关于HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
鸿蒙没有支持Dart吧?
更多关于HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter可以打包成鸿蒙应用的哈,可以详见我的这篇文章"链接"。
在HarmonyOS鸿蒙Next中,使用Flutter开发接入极光推送服务,可以通过以下步骤实现:
-
创建极光推送应用:首先在极光推送官网注册并创建一个应用,获取AppKey。
-
配置Flutter项目:在
pubspec.yaml
文件中添加jpush_flutter
依赖:dependencies: jpush_flutter: ^2.0.0
-
初始化极光推送:在Flutter项目的
main.dart
文件中初始化极光推送服务:import 'package:jpush_flutter/jpush_flutter.dart'; final JPush jpush = JPush(); void main() async { WidgetsFlutterBinding.ensureInitialized(); jpush.setup( appKey: 'your_app_key', channel: 'developer-default', production: false, debug: true, ); runApp(MyApp()); }
-
处理推送消息:在Flutter中监听和处理推送消息:
jpush.addEventHandler( onReceiveMessage: (Map<String, dynamic> message) async { print("收到推送消息: $message"); }, onOpenNotification: (Map<String, dynamic> message) async { print("点击通知栏消息: $message"); }, );
-
配置HarmonyOS权限:在
config.json
文件中添加必要的权限:{ "app": { "permissions": [ "ohos.permission.INTERNET", "ohos.permission.RECEIVE_BOOT_COMPLETED" ] } }
-
构建和运行:使用
flutter build
命令构建项目,并在HarmonyOS设备上运行。
通过以上步骤,可以在HarmonyOS鸿蒙Next中实现Flutter应用接入极光推送服务。
在HarmonyOS鸿蒙Next中接入极光推送服务,首先需要在极光官网注册应用并获取AppKey。接着,在Flutter项目中添加jpush_flutter
依赖,并在pubspec.yaml
中配置。然后,在main.dart
中初始化极光推送,设置监听器以处理推送消息。最后,根据需求配置推送权限和通知渠道。确保在Android和iOS平台分别进行相关配置,以实现跨平台的推送功能。