图解鸿蒙OS服务卡片原理!

阿西 2021-07-14 14:09:54 4788

2021 年 6 月 2 日晚间,华为在 HarmonyOS 2 系统及全场景新品发布会上正式推出了服务卡片,颠覆了人们对 APP 信息展示的认知,引起了行业内的极大关注。

本文是对 HarmonyOS 服务卡片的原理和架构的分析。限于当前资料有限,文章内容难免有错漏,敬请谅解。

HarmonyOS 服务卡片简介

①服务卡片官方定义

服务卡片(以下简称“卡片”)是鸿蒙 FA(Feature Ability)的一种界面展示形式,将 FA 的重要信息或操作前置到卡片,以达到服务直达,减少体验层级目的。

②举例说明什么是服务卡片

我们以“玩机技巧”这个应用为例感受服务卡片带给我们的价值。当我们用手指按下图标的同时往上滑,就会弹出该应用的默认卡片,点击卡片右上角的图钉,就将卡片固定在了桌面上;点击卡片中的按钮,可以开始查看玩机技巧。

这样,通过与卡片进行交互,用户无需打开应用,就可以实现应用内的部分操作,使用十分便捷。

③服务卡片的价值

举一反三,想象一下:

不用打开微信就可以直接运行扫一扫、付款码

不用打开微博就可以看到最新的热点信息

不用打开邮件服务就可以看到最新的邮件列表

……

服务卡片重新打开了应用创新的大门,给应用带来了新的业务价值和流量入口。

④服务卡片与原子化服务是什么关系?

说起服务卡片,就不得不提到与之紧密关联的原子化服务。

原子化服务官方是 HarmonyOS 提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击、碰一碰、扫一扫等方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用)、可为用户提供一个或多个便捷服务的用户程序形态。

服务卡片是鸿蒙 OS 原子化服务的展示方式。原子化服务是里子,服务卡片是面子。

服务卡片应用当前仅支持部署在 HarmonyOS 闭源版本上,在鸿蒙开源版本 OpenHarmony 2.0 上该特性尚未支持。

服务卡片操作说明

①如何查看某个应用的服务卡片?

如果应用的图标下方显示了一条横线,用手指按下图标的同时往上滑,就会弹出该应用的默认卡片,点击卡片右上角的图钉,就将卡片固定在了桌面上;卡片支持点击交互,用户无需打开应用,就可以实现应用内的部分操作。

比如,下图中的拍照、电话、畅连应用都支持服务卡片特性:

②如何查看一个应用的所有卡片?

以“玩机技巧”这个应用为例,在桌面上长按其图标,在弹出的菜单中点击“服务卡片”,就显示出了玩机技巧这个应用的所有卡片。

③如何查看服务卡片列表?

手指从桌面左下角或右下角向屏幕中心划出,调出“我的服务”,可以看到手机支持的服务卡片列表。

服务卡片原理分析

通过上面的介绍,我们对服务卡片有了大致的了解。那么服务卡片本质上到底是什么,它是类似微信小程序的应用吗?它和目前市面上的哪类应用是类似的?区别又在哪里?

要回答上述问题,我们把业界出现的典型应用类型和典型代表简单总结一

下面重点介绍一下微信小程序、快应用、widget:

①微信小程序

微信小程序于 2017 年 1 月 9 日凌晨正式上线。微信小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。

也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。

微信小程序的框架包含两部分 View 视图层、App Service 逻辑层,View 层用来渲染页面结构,AppService 层用来逻辑处理、数据请求、接口调用,它们在两个线程里运行。

视图层使用 WebView 渲染,逻辑层使用 JSCore 运行。视图层和逻辑层通过系统层的 JSBridage 进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。
图片

②快应用

快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验。2018 年 3 月 20 日在北京推出“快应用”标准。

“快应用”使用前端技术栈开发,原生渲染,同时具备 H5 页面和原生应用的双重优点。

③什么是 Widget?

Widget 的定位其实相当于应用程序的扩展程序,使用的关键点在于用户可以在不打开应用、无需加载等待的情况下,在屏幕上快速获取信息甚至进行简单的操作。

苹果多次强调 Widget 不是进入应用的另一种快捷方式,Widget 是一种的信息展现方式,用来快速提供展示某些用户关心的应用程序数据。

Widget 在刚进入中国的时候,没有通用的译名,由当时的中搜命名为“微件”。直到这次 iOS 14 才使用“小组件”的命名。

Widget 按照用户使用场景的不同,可以分为:信息小组件、集合小组件、控件小组件及混合小组件。

而 iOS 一直将主屏幕的控制放置于控制中心中进行交互,因此小组件类型的主要是信息小组件及集合小组件。

Widget 的刷新完全由 WidgetCenter 控制。开发者无法通过任何 API 去主动刷新 Widget 的页面,只能告知 WidgetCenter,Timeline 需要刷新了。

Widget 只能用 SwiftUI 来进行开发,确切的说,Widget 的本质是一个随着时间线而更新的 SwiftUI 视图。

④Widget 交互及展示

Widget 的 UI 是无状态的,它不支持播放动画 gif、视频,不支持滚动,不支持主动刷新视图,唯一支持的只有用户点击和 DeepLink 唤起主 app。

综合对比相关特性能力,鸿蒙卡片服务更像是对标 widget 的应用形态。鸿蒙服务卡片的英文名为 service widget,也从侧面印证了这个观点。

服务卡片特征

鸿蒙 OS 服务卡片有三大特征:

随处可及:

服务发现:原子化服务可在服务中心发现并使用。

智能推荐:原子化服务可以基于合适场景被主动推荐给用户使用;用户可在服务中心和小艺建议中发现系统推荐的服务。

服务直达:

原子化服务支持免安装使用。

服务卡片:支持用户无需打开原子化服务便可获取服务内重要信息的展示和动态变化,如天气、关键事务备忘、热点新闻列表。

跨设备:

原子化服务支持运行在 1+8+N 设备上,如手机、平板等设备。

支持跨设备分享:例如接入华为分享后,用户可分享原子化服务给好友,好友确认后打开分享的服务。

支持跨端迁移:例如手机上未完成的邮件,迁移到平板继续编辑。

支持多端协同:例如手机用作文档翻页和批注,配合智慧屏显示完成分布式办公;手机作为手柄,与智慧屏配合玩游戏。

根据以上官方宣传可见,基于鸿蒙分布式能力,鸿蒙 OS 在 widget 的基础上新增了跨设备能力,赋予了 widget 新的生命力。

当用户跨设备进行流转和分享业务时,被流转到的设备不用预先安装应用,极大增强了服务卡片的适用场景和价值。

原子化服务架构

关于鸿蒙 OS 原子化服务的架构有 2 张图可以参考:

基本概念:

卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置。

卡片管理服务:用于管理系统中所添加卡片的常驻代理服务,包括卡片对象的管理与使用,以及卡片周期性刷新等。

卡片提供方:提供卡片显示内容的 HarmonyOS 应用或原子化服务,控制卡片的显示内容、控件布局以及控件点击事件。

说明:卡片使用方和提供方不要求常驻运行,在需要添加/删除/请求更新卡片时,卡片管理服务会拉起卡片提供方获取卡片信息。

卡片管理服务包含以下模块:

周期性刷新:在卡片添加后,根据卡片的刷新策略启动定时任务周期性触发卡片的刷新。

卡片缓存管理:在卡片添加到卡片管理服务后,对卡片的视图信息进行缓存,以便下次获取卡片时可以直接返回缓存数据,降低时延。

卡片生命周期管理:对于卡片切换到后台或者被遮挡时,暂停卡片的刷新;以及卡片的升级/卸载场景下对卡片数据的更新和清理。

卡片使用方对象管理:对卡片使用方的 RPC 对象进行管理,用于使用方请求进行校验以及对卡片更新后的回调处理。

通信适配层:负责与卡片使用方和提供方进行 RPC 通信。

卡片提供方包含以下模块:

卡片服务:由卡片提供方开发者实现,开发者实现 onCreateForm、onUpdateForm 和 onDeleteForm 处理创建卡片、更新卡片以及删除卡片等请求,提供相应的卡片服务。

卡片提供方实例管理模块:由卡片提供方开发者实现,负责对卡片管理服务分配的卡片实例进行持久化管理。

通信适配层:由 HarmonyOS SDK 提供,负责与卡片管理服务通信,用于将卡片的更新数据主动推送到卡片管理服务。

根据以上架构描述,个人分析和推理的内容如下:

服务卡片如何做到跨设备流转和分享时不用预先安装应用?

鸿蒙 OS 原子化服务采用卡片使用方和卡片提供方分离的架构,卡片使用方和卡片提供方可以在相同的或不同的设备上。

如果在不同的设备进行流转,通过 RPC 通信,鸿蒙 OS 可以实现跨设备流转和分享能力,并且接收方不用预先安装应用。

同时,对于卡片提供方离线的风险,鸿蒙 OS 通过在架构上支持卡片管理服务的缓存机制也进行了有效应对。

②其他设计讨论

目前尚不清楚原子化服务定时刷新模块的实现原理,不知道是否和 iOS widget 相同,由系统统一调度刷新,从而提高整机刷新性能。

当卡片使用方和卡片提供方在同一台终端上时,从架构上看,似乎可以优化为直接通信不经过卡片管理服务的方式,中间减少一个环节,避免性能损耗。

原子化服务未来展望

我们从 iOS 14 widget 的特性对比分析一下,鸿蒙 OS 服务卡片未来可能会推出哪些功能。

①配置功能

用户可以根据自己的偏好配置。以天气类组件为例,有些用户可能关心的是晴天、雨天、温度等信息,有些用户可能只关心 PM2.5 的信息。

由于小组件的显示空间有限,有时候你无法将所有的信息都展示在组件内,因此让用户选择他感兴趣的信息进行小组件的配置是非常重要的特性。

②类似 Smart Stack 功能

iOS widget 具有智能堆栈 Smart Stack 能力 ,集成 siri 的智能化推荐能力,能根据你使用时间,位置等因素,来智能显示组件。

比如,早上起床显示天气信息;到达办公室显示微信新消息信息;晚上下班显示路线拥堵情况等。

目前鸿蒙 OS 实现了小艺建议,但是小艺建议推荐的是应用列表,不是服务卡片的轮流展示能力。

③展开和折叠功能

服务卡片的展开和折叠能力,对于列表类的服务卡片显得尤为重要,折叠时可以节省桌面空间,对于部分对空间敏感的人群特别适用。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
阿西
红包 92 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
阿西
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区