HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务

发布于 1周前 作者 nodeper 来自 鸿蒙OS

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

  1. AppGalleryConnect项目中,开通推送服务。
  2. 在项目设置中查看应用的Client ID,并在 entry 模块下的「module.json5」文件中添加配置:
"module": {
  "metadata": [
    {
      "name": "client_id",
      "value": "你的id"
    }
  ]
}
  1. 确保应用包名和证书指纹无误的情况下,下载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. 使用流程

  1. 用户同意隐私协议后,先向用户申请推送权限。推送权限只能申请一次,无论用户授权与否,再次申请不会弹窗,需要用户自行到设置中手动修改授权。
  2. 随后初始化极光推送。
  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;
    }
  }
}
  1. 在需要时,可以通过「getRegistrationId」获取用户设备在极光推送中的注册ID,并进行相应存储,用于对用户的单独消息推送(如订单信息、物流状态等)。

关于极光推送使用rid推送消息的方式,可以参照极光官方文档在后端实现。 点击推送消息跳转页面或做出其他操作的相关内容会在后续奉上


更多关于HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

4 回复

鸿蒙没有支持Dart吧?

更多关于HarmonyOS鸿蒙Next中Flutter开发接入极光推送服务的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter可以打包成鸿蒙应用的哈,可以详见我的这篇文章"链接"

在HarmonyOS鸿蒙Next中,使用Flutter开发接入极光推送服务,可以通过以下步骤实现:

  1. 创建极光推送应用:首先在极光推送官网注册并创建一个应用,获取AppKey。

  2. 配置Flutter项目:在pubspec.yaml文件中添加jpush_flutter依赖:

    dependencies:
      jpush_flutter: ^2.0.0
  3. 初始化极光推送:在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());
    }
  4. 处理推送消息:在Flutter中监听和处理推送消息:

    jpush.addEventHandler(
      onReceiveMessage: (Map<String, dynamic> message) async {
        print("收到推送消息: $message");
      },
      onOpenNotification: (Map<String, dynamic> message) async {
        print("点击通知栏消息: $message");
      },
    );
  5. 配置HarmonyOS权限:在config.json文件中添加必要的权限:

    {
      "app": {
        "permissions": [
          "ohos.permission.INTERNET",
          "ohos.permission.RECEIVE_BOOT_COMPLETED"
        ]
      }
    }
  6. 构建和运行:使用flutter build命令构建项目,并在HarmonyOS设备上运行。

通过以上步骤,可以在HarmonyOS鸿蒙Next中实现Flutter应用接入极光推送服务。

在HarmonyOS鸿蒙Next中接入极光推送服务,首先需要在极光官网注册应用并获取AppKey。接着,在Flutter项目中添加jpush_flutter依赖,并在pubspec.yaml中配置。然后,在main.dart中初始化极光推送,设置监听器以处理推送消息。最后,根据需求配置推送权限和通知渠道。确保在Android和iOS平台分别进行相关配置,以实现跨平台的推送功能。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!