前言
2023年8月4日,华为在“2023华为开发者大会”上发布了HarmonyOS NEXT。HarmonyOS NEXT是华为公司自研操作系统,鸿蒙系统将抛弃Linux内核及安卓开源AOSP源码,仅支持鸿蒙自研内核和鸿蒙平台的应用,不再兼容安卓应用。为全面支持国产自研鸿蒙平台,极光消息推送服务快速的也接入了鸿蒙生态,并在鸿蒙平台重新实现极光消息推送服务。
极光鸿蒙平台框架
极光消息推送服务,主要由极光SDK、极光消息后台服务、极光portal页面几个模块组成。
在接入鸿蒙平台的过程中,极光消息推送服务主要做了以下几块适配工作:
1. 基于鸿蒙next开发语言ArkTS开发全新的应用SDK
2. 基于消息推送服务端API新增鸿蒙平台增加全链路平台支持,包括API鸿蒙新平台参数支持,DB存储鸿蒙相关必要业务字段,鸿蒙用户目标筛选,鸿蒙平台消息统计等
3. 基于华为鸿蒙的推送消息厂商API,适配全新鸿蒙消息通道
4. 基于极光消息web portal页面控制台的鸿蒙新平台支持
其中,极光消息后台服务端支持鸿蒙平台是整体的关键点所在。在极光原有平台框架基础上,增加了鸿蒙完整的消息链路:
鸿蒙平台Web Portal的使用
web portal是极光消息服务的控制台,改造后,也对鸿蒙平台做了全面的支持。
以下是极光web portal页面控制,针对鸿蒙平台新增部分相关示例:
● 鸿蒙平台推送设置
● 鸿蒙平台消息推送管理
● 鸿蒙平台消息推送统计
鸿蒙平台SDK的接入
● 鸿蒙SDK概述
众所周知,鸿蒙平台的应用基于全新的ArkTS语言开发。因此,极光也基于该语言开发了鸿蒙平台SDK,当前极光鸿蒙SDK支持HarmonyOS API 11及以上版本。
● 鸿蒙SDK主要功能
类似极光Android、IOS等平台SDK,极光鸿蒙SDK同样主要提供了以下功能:
1. 保持与服务器的长连接,以便消息能够即时推送到达客户端
2. 接收通知,并向开发者 App 传送指定消息
● 鸿蒙SDK接入适配
鸿蒙SDK接入API主要涉及以下几类:
SDK API |
说明 |
设置调试模式API |
setDebug ● 可选接口 ● 初始化前,AbilityStage(#onCreate) 里调用 |
配置极光Appkey |
setAppKey ● 初始化前,AbilityStage(#onCreate) 里调用 |
开启推送业务功能API |
init ● 启动时调用,AbilityStage(#onCreate) 里调用 |
获取 RegistrationID |
getRegistrationId ● 反回注册的rid |
设置回调接口 |
setCallBackMsg ● 监听回调事件和数据 ● 初始化前,AbilityStage(#onCreate) 里调用 ● 详细回调接口,可参考极光官网SDK API |
通知跳转 |
setClickWant ● 请先setAppKey,否则调用无效 |
标签与别名API |
addTags/deleteTags/setTags等 ● 详细接口使用,可参考极光官网SDK API |
鸿蒙SDK可在极光官网进行下载,并参考API使用说明,鸿蒙厂商参数配置等接入指南。
另,对于ArkTS和HarmonyOS的编程特性和使用,请参考华为官网。
鸿蒙平台服务端API的使用
对接鸿蒙平台消息推送业务,后台服务端基本继承极光原有rest api体系。极光遵循以客户开发者为本,对与新平台支持的目标是,以期在客户改动最少的情况下,最大程度兼容原有服务。
● 推送API
在推送API参数中,涉及鸿蒙相关的字段主要为platform推送平台和notification通知
platform:
notification:
通知字段主要描述推送实体内容对象,会作为“通知”推送到客户端。以下是鸿蒙平台API推送消息涉及的相关字段:
关键字 |
类型 |
选项 |
含义 |
说明 |
alert |
string |
必填 |
通知内容 |
● 这里指定后会覆盖上级统一指定的 alert 信息。 ● 内容可以为空字符串,表示不展示到通知栏。 |
title |
string |
可选 |
通知标题 |
● 如果指定了,则通知里原来展示 App 名称的地方,将展示 title。否则使用WebPortal配置的默认title。 |
category |
string |
必填 |
通知栏消息分类条目 |
● 此字段由于厂商为必填字段,效果也完全依赖 rom 厂商对 category 的处理策略,请开发者务必填写。极光内部对此字段实际未进行必填校验,请开发者按照必填处理。 ● 此字段值对应官方「本地通知」category取值,开发者通过极光服务发起推送时如果传递了此字段值,请务必按照官方要求传递,官方category分类取值规则也可参考 |
large_icon |
string |
可选 |
通知栏大图标 |
● 要求传递网络地址,使用HTTPS协议,取值样例:https://example.com/image.png ● 图标大小不超过 30 k,图片长*宽<12800像素 |
intent |
JSON Object |
可选 |
指定跳转页面 |
支持跳转到 deeplink 地址和应用首页两种类型: 1. 跳转应用首页:固定 action.system.home 2. 跳转到 deeplink 地址: scheme://test?key1=val1&key2=val2 |
badge_add_num |
int |
可选 |
设置角标数字累加值 |
● 此字段如果不填,表示不改变角标数字 ●
取值范围为:1-99,若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和原角标数量进行相加,建议取值为 1 |
test_message |
boolean |
可选 |
测试消息标识 |
测试消息标识: ● false:正常消息(默认值) ● true:测试消息 |
receipt_id |
string |
可选 |
华为回执 ID |
输入一个唯一的回执 ID 指定本次下行消息的回执地址及配置,该回执 ID 可以在极光鸿蒙回执参数配置中查看 |
extras |
JSON Object |
可选 |
扩展字段 |
● 这里自定义 JSON 格式的 Key / Value 信息,以供业务使用 |
● 统计API/标签别名API,基本兼容极光原有API,详细使用可参考极光官网。
总结
限于篇幅原因,本文简单介绍了极光消息推送服务接入鸿蒙平台的相关事项,当然也无法覆盖极光消息服务鸿蒙平台使用的方方面面。同时,也因HarmonyOS正式版本暂未发布。极光消息服务会对HarmonyOS的发布、更新、迭代保持密切关注,在正式版本及新特性公布的第一时间进行迭代,以期尽力服务好极光的每一个客户。
谢谢大家对极光消息服务的关注。
鸿蒙接入参考资料
极光鸿蒙SDK集成指南:https://docs.jiguang.cn/jpush/client/HarmonyOS/hmos_guide
极光鸿蒙服务端API使用:https://docs.jiguang.cn/jpush/server/push/server_overview