流转概述
介绍
随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。
基本概念
- 流转:在HarmonyOS中泛指多设备分布式操作。流转能力打破设备界限,多设备联动,使用户应用程序可分可合、可流转,实现如邮件跨设备编辑、多设备协同健身、多屏游戏等分布式业务。流转为开发者提供更广的使用场景和更新的产品视角,强化产品优势,实现体验升级。流转按照体验可分为跨端迁移和多端协同。
- 跨端迁移:一种实现用户应用程序流转的技术方案,指在A端运行的FA迁移到B端上,完成迁移后, B端FA继续任务,而A端应用退出。在用户使用设备的过程中,当使用情境发生变化时(例如:从室内走到户外或者周围有更合适的设备等),之前使用的设备可能已经不适合继续当前的任务,此时,用户可以选择新的设备来继续当前的任务。常见的跨端迁移场景实例:
- 视频来电时从手机迁移到智慧屏,视频聊天体验更佳,手机视频应用退出。
- 手机上阅读应用浏览文章,迁移到平板上继续查看,手机阅读应用退出。
- 多端协同:一种实现用户应用程序流转的技术方案,指多端上的不同FA/PA同时运行、或者交替运行实现完整的业务;或者,多端上的相同FA/PA同时运行实现完整的业务。多个设备作为一个整体为用户提供比单设备更加高效、沉浸的体验。例如:用户通过智慧屏的应用A拍照后,A可调用手机的应用B进行人像美颜,最终将美颜后的照片保存在智慧屏的应用A。常见的多端协同场景实例还有:
- 手机侧应用A做游戏手柄,智慧屏侧应用B做游戏显示,为用户组成一个全新的游戏体验。
- 平板侧应用A做答题板,智慧屏侧应用B做直播,为用户组成一个全新的上网课体验。
流转架构
HarmonyOS流转提供了一组API库,可让用户应用程序更轻松、快捷地完成流转体验。HarmonyOS流转架构有如下优势:
- 统一流转管理UI,支持设备发现、选择以及任务管理。
- 支持远程服务调用等能力,可轻松设计业务。
- 支持多个应用同时进行流转。
- 支持不同形态设备,如手机、平板、TV、手表等。
流转架构如下图所示。
- 流转任务管理服务:在流转发起端,接受用户应用程序注册,提供流转入口、状态显示、退出流转等管理能力。
说明
- 当前仅手机、平板设备支持流转任务管理服务。
- 如果流转发起端不支持流转任务管理服务,则流转业务实现方式有区别。
- 分布式任务调度:提供远程服务启动、远程服务连接、远程迁移等能力,并通过不同能力组合,支撑用户应用程序完成跨端迁移或多端协同的业务体验。
- 分布式安全:提供E2E的加密通道,为用户应用程序提供安全的跨端传输机制,保证“正确的人,通过正确的设备,正确地使用数据”。
- 分布式软总线:使用基于手机、平板、智能穿戴、智慧屏等分布式设备的统一通信基座,为设备之间的互联互通提供统一的分布式通信能力。
跨端迁移流程
以设备A的应用和设备B的应用进行跨端迁移为例,业务流程如下:
- 流转准备:设备A上的应用向流转任务管理服务注册一个流转回调
- Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
- Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
- 流转完成:设备A上的应用通过调用分布式任务调度的能力,如continueAbility等,向设备B的应用发起跨端迁移。流转中将流转状态上报到流转任务管理服务。
说明
跨端迁移后,设备A上的应用需要自行退出。
多端协同流程
以设备A的应用和设备B的应用进行多端协同为例,业务流程如下:
- 流转准备:设备A上的应用向流转任务管理服务注册一个流转回调:
- Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
- Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。
- 流转进行:设备A上的应用通过调用分布式任务调度的能力,如startAbility, connectAbility等,向设备B的应用发起多端协同。流转中将流转状态上报到流转任务管理服务。
- 流转结束:用户通过设备A的流转任务管理界面结束流转。用户点击结束任务后,流转任务管理服务回调通知应用取消流转。设备A上的应用通过调用分布式任务调度的能力,如stopAbility, disconnectAbility等,终止和设备B的多端协同。流转结束后将流转状态上报到流转任务管理服务,并向流转任务管理服务注销流转回调。
说明
设备A和B进行多端协同后,设备A和设备C重复如上流程,可实现设备A、B、C进行多端协同,此时设备A是中心控制点。
兼容性设计
不管跨端迁移还是多端协同,流转都是由两个设备上的用户应用程序共同完成的,两个设备上的用户应用程序需要做如下兼容设计:
- 跨端应用版本兼容
建议用户应用程序设计版本号和最小兼容版本号。只有当设备A的用户应用程序版本号>=设备B的用户应用程序最小兼容版本号,且设备B的用户应用程序版本号>=设备A的用户应用程序最小兼容版本号时,才允许进行流转。
对于跨端迁移或多端协同场景,如果是同一个应用在A端和B端进行通信,此时流转任务管理服务提供了版本兼容性检查机制,可以将满足条件的设备筛选出来。
说明
流转任务管理服务提供的版本兼容性检查机制要求两个设备是同一个用户应用程序。
要求用户应用程序在填写config.json时,填写minCompatibleVersionCode字段(最小兼容版本号)和code字段(当前版本号)。minCompatibleVersionCode标识app pack能够兼容的最低历史版本号。该标签值为32位整形数值,非负整数。如果应用/服务未配置minCompatibleVersionCode,则系统将minCompatibleVersionCode默认填写为当前版本号。
对于多端协同,如果是不同应用之间的A、B端协同,则需要不同应用自己实现版本兼容性检查机制。
- 跨端元服务安装
跨端被拉起的程序建议设计为元服务。即当设备A的用户应用程序向设备B的元服务发起多端协同,如果设备B上没有安装对应服务,HarmonyOS会自动下载相关元服务,和A端的用户应用程序一起进行多端协同。如跨端被拉起的程序设计为传统方式的需要安装的应用,则当设备A的用户应用程序向设备B的元服务发起多端协同,如果设备B上没有安装相关应用,会提示流转失败。