‍♀️ 编者按:本文作者是蚂蚁集团客户端工程师博欢,介绍了支付宝怎么根据 HarmonyOS 4.0 实况窗完结医疗场景履约智能提醒,欢迎查阅~

1.话题背景

8 月 4 日,华为在HDC(华为 2023 开发者大会)上推出了新版别操作体系-鸿蒙 4.0,主打个性化与多元化的的口号。在功用介绍环节,支付宝依托鸿蒙体系 4.0 才能供给的一项新功用出现在了大会的介绍 ppt 上。

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
这个功用乍一看就像一个体系的告诉,实际上也确实是一个告诉,只不过与告诉有很大的差异。在华为的官方文档里,这个被称之为实时活动或许是实况告诉。实时活动是最开端的称号,现在官方文档称之为实况告诉或许是实况窗。 为什么说它是国产灵动岛呢?因为这个实时活动具有多种形状,其中的胶囊态与ios的灵动岛在UI展现上几乎便是”如出一辙”。除此之外,实时活动具有更加丰厚的展现方位,从息屏,锁屏,到桌面,告诉栏,告诉中心,都会其身影。咱们首先来看一下官方的作用展现:
HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
依次分别是告诉栏卡片,桌面胶囊态,桌面胶囊态打开形状,锁屏卡片,息屏胶囊态 在上方官方的UI展现作用图上,胶囊态不光展现在桌面上,支撑点击扩展为告诉卡进行操作,一起出现在息屏界面。息屏页面的胶囊态案牍不支撑点击扩展为实时卡片。点击息屏胶囊态,会进入锁屏卡片页面检查概况。 实时活动本质上是履约类音讯的推送展现。华为的官方定义为:帮助用户聚集任务,进行快速检查和及时处理的告诉形体。实时活动具有实效性,阶段性和变化性的特色。实效性是指,整个告诉服务会继续一段时间,在用户不自动关闭的前提下,具有自动展现和结束的才能。实效性是指,告诉的音讯在一段时间内有效。告诉具有变化性,它是支撑内容动态改写。

2.成果展现

在了解了华为实时活动的背景和才能之后,咱们回到发布会上所展现的支付宝实时活动告诉。现在支付宝在最新10.5.10版别现已具有了华为实时活动才能,现在首要接入使用场景在医疗方面,后续会敞开更多的使用场景。那咱们先来欣赏一下支付宝上的”国产灵动岛”的真实上机形状。

  • 告诉栏状况
    • 左边展现正常创立实时活动卡片;
    • 右侧展现支撑用户对卡片进行更多操作,包含设置和删去卡片;

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  • 桌面胶囊态:
    • 左边展现手机桌面左上角的胶囊案牍;
    • 中心侧展现点击胶囊态可打开告诉卡片;
    • 右侧展现在胶囊态打开卡片后支撑用户更多操作,包含设置和删去卡片;

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  • 锁屏状况:
    • 展现用户按下电源键进入锁屏页面展告诉卡片(手机拍摄);

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  • 息屏胶囊态:
    • 手机界面进入息屏界面展现胶囊案牍(手机拍摄);

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
上述所展现的仅为着重案牍类模板在支付宝医疗场景下的UI作用,除了着重案牍类模板外,华为还供给了多种展现模板使用于不同的场景,比如说针对打车或许外卖场景下的进展可视化类模板,针对体育赛事的赛事比分模板。 实时活动能够作为一个强提醒告诉渠道,关于重要信息能够多方位展现。假如考虑到关于部分用户出现过度打扰,实时活动相同支撑减少胶囊态案牍透出,只出现告诉栏中。

3.完结细节

展现了这么多状况的实时活动UI,大家会比较猎奇怎么完结这样一套实时活动告诉呢? 刚才在最初现已介绍了实时活动其实是一个告诉,本质上是Android告诉功用的扩展。鸿蒙体系经过解析告诉的扩展参数,创立对应的模板并填充数据。关于接入功用的第三方使用而言,不需求制作UI,只需求定制接口协议与模版参数,即可完结告诉活动卡片的创立与展现。别的咱们所看到的胶囊态其实不是一种独立的形状,它是卡片形状的扩展形式,依附于具体的卡片模板,这便是为什么在桌面经过点击胶囊态能够打开卡片。 以支付宝接入医疗场景的实时活动为例,简略介绍一下完结细节。

3.1处理链路

在支付宝端内,完结一个实时活动告诉,涉及到三个事务团队的协作,包含客户端团队,音讯渠道服务端团队以及音讯Push团队,这三个团队的分工如下:

  • 客户端团队:接纳音讯渠道下发的sync音讯(服务端与客户端之间的双向可靠数据同步服务,包含sync上行和下行),创立实况告诉,也便是告诉“上岛”,并将卡片信息与token信息发送至音讯渠道团队和Push团队;
  • 音讯渠道服务端团队:查询用户在服务场景下创立的履约订单,依照通信协议经过sync下行告诉到客户端,接纳客户端sync上行的卡片信息;
  • Push团队:接纳客户端Rpc上报的token信息,而且作为下流,接纳上游音讯渠道传递来的卡片告诉更新信息。将更新参数发送至厂商云端,由厂商完结告诉卡片的更新以及删去操作;

详细的流程经过甬道图表明:

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
关于三方使用而言,不需求关怀UI制作。关于客户端团队而言,完结告诉卡片的创立之后,无感后续的更新操作。由三方使用云端直接对接厂商云端,厂商渠道接纳更新数据后直接下发到对应的告诉卡片,完结状况与数据更新。下图展现的是告诉卡片更新状况下的数据流通:
HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

3.2通信协议

实时活动的通信协议首要包含两方面:

  1. 三方使用内的通信协议:数据由音讯渠道下行到客户端,并在客户端创立告诉卡片后,将更新音讯发送下流Push渠道。
  2. 三方使用外与厂商渠道的通信协议:Push渠道接纳上游音讯渠道的更新音讯后,将数据流通对接到厂商渠道完结更新;

这两个通信协议其实也是告诉卡片生命周期流程。三方使用内的通信协议使用于实时活动告诉卡片的创立,三方使用与厂商渠道的通信协议是使用于实时活动告诉卡片的更新。

3.2.1 使用内通信协议

使用内的通信协议并不是独立的,而是继承自ios灵动岛在支付宝端内的通信协议。为什么说是继承?为什么说是非独立? 继承是因为华为实时活动的协议是iOS灵动岛在支付宝端内通信协议的扩展版别,及在原有的协议基础上,扩展创立华为实时活动卡片的有必要字段。整个协议的创立原则是:最大包容原则,即能复用现有字段则复用现有字段,缺少则经过团队洽谈后进行扩展。 非独立是指,整个通信协议的确定有必要具有前瞻性,包含能满足未来支撑华为更多品种模板的实时活动,也能满足后续其他国内厂商跟进同类“灵动岛”功用的需求。 这一套协议现在现已支撑iOS灵动岛以及华为实时活动,由客户端团队保护.

3.2.2 使用外通信协议

使用外的通信协议首要是用于Push团队对接厂商进行告诉卡片更新操作。这个的复杂在于,需求翻译使用内的通信协议。将翻译后的使用内的通信协议字段恳求厂商接口,完结实时活动告诉卡片的更新。 怎么翻译使用内的协议,首要是将音讯渠道,客户端,Push三个团队的对接字段关联起来,做成一个三元组参数。 使用外的通信协议现在仍然由客户端团队保护。

3.3代码接入

代码接入首要是以客户端的角度来描绘。

3.3.1 创立卡片

实时活动是在告诉的基础上附加了扩展参数,若是在支撑实时活动的设备上发送,则体系会根据这些扩展参数,将告诉依照实时活动的样式进行显现。

// 创立 bundle 保存告诉信息,设置 type4,表明着重文本模板类型
Bundle liveNotificationData = new Bundle();
liveNotificationData.putInt("XXXX", 0);
liveNotificationData.putString("XXXX, "Other");
liveNotificationData.putInt("XXXX", 4);
// 创立 bundle 保存着重文本模板类型的告诉所需的扩展参数
Bundle feature = new Bundle();
feature.putString("XXXX", "取餐码");
feature.putString("XXXX", "750");
// 将 feature 的 bundle 设置到告诉参数 liveNotificationData 中
liveNotificationData.putBundle("XXXX", feature);
// 创立告诉,调用 addExtras 增加告诉信息
Notification notification = new Notification.Builder(context, channelId)

3.3.2 扩展胶囊

前文讲过胶囊态是卡片的扩展形状,在开发上,设计好胶囊的参数,然后增加至实时活动告诉卡片的扩展参数上。

// 创立 bundle 保存胶囊所需的参数
Bundle capsule = new Bundle();
capsule.putInt("XXXX", 1);
capsule.putInt("XXXX", 1);
capsule.putParcelable("XXXX", Icon.createWithResource(context, R.drawa
ble.xxx));
capsule.putInt("XXXX", Color.parseColor("# FFFF0000"));
capsule.putString("XXXX", "胶囊标题");
capsule.putString("XXXX", "胶囊扩展内容");
// 将胶囊参数设置到告诉参数中
liveNotificationData.putBundle("XXXX, capsule);

4.继续优化

现在而言,华为实时活动功用在支付宝端内的的完结计划并非肯定完美,出现的问题首要是包含两个方面:

  1. 厂商推送更新才能并非百分之百:现在稀有据表明华为在接纳三方使用的Push更新的过程中,到达率是92%,也便是说会有8%的数据会丢掉在厂商更新用户设备链路的通道上;
  2. 用户设备信息存在多事务团队的一起获取:华为实时活动卡片的更新依赖用户设备的PushToken信息,在支付宝端内现在至少存在两个团队需求获取PushToken。可是华为对PushToken的获取频次有约束,有概率会形成某个事务Token信息的获取失败;

4.1 端侧更新

关于第一个问题,厂商推送更新才能存在缺点时,更新机制需求具有兜底措施,现在在支付宝内部保留了端内更新的才能,该才能与厂商更新有所差异,体现在更新机遇以及更新字段协议。 厂商的更新机遇首要是在接纳到三方使用建议更新接口恳求时,端内的的更新机遇则是在指定机遇内自动恳求音讯渠道数据,关于更新数据选用掩盖更新,行将获取到字段依照协议更新到对应模板参数中。

4.2 PushToken复用

关于第二个问题,是支付宝端内复杂的事务场景导致,毕竟一个团队在需求PushToken时,没办法知晓哪些团队相同需求PushToken,在多个事务一起恳求设备PushToken信息时,会存在失败的可能。因为时间节奏比较紧,现在的计划由Push团队收拢,在实时活动未上报PushToken的情况下,获取其他事务上传的PushToken。(在这里需求说明,华为的PushToken信息基本不变,所以差异于Ios灵动岛的Token信息上报)。 在后期的解决计划中,团队打算选用缓存计划,缓存PushToken,做到端内的事务推行,保护一套数据。

5.场景掩盖

整个实时活动的功用现已上线,只不过受限于华为鸿蒙4.0版别正式版别节奏,无法铺开线上体会。现在也只接入了医疗场景。咱们的事务后续会接入更多的场景。现在医疗场景掩盖的内容包含以下:

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
告诉卡片能够透出:预定医院,预定时间,当前进展等内容;

6.未来可期

现在咱们整体功用以及链路流程都是现已存在的,能够支撑快速接入事务完结上线。咱们支撑的才能包含不限于:

  1. 针对音频播映类,传输进展类等事务场景的基础类型模板:

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  1. 关于打车,外卖等事务场景的进展可视化模板:

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  1. 针对高铁,航班等事务场景的左右文本模板:

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒

  1. 针对体育赛事等事务场景的赛事分数模板(尤其是支付宝接入了NBA赛事,这个能够有):

HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒