HarmonyOS学习路之开发篇—流转

简介: 随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。

流转概述

介绍

随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。


基本概念

流转:在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的应用进行跨端迁移为例,业务流程如下:


1.流转准备:设备A上的应用向流转任务管理服务注册一个流转回调

Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。

Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。

2.流转完成:设备A上的应用通过调用分布式任务调度的能力,如continueAbility等,向设备B的应用发起跨端迁移。流转中将流转状态上报到流转任务管理服务。

说明


跨端迁移后,设备A上的应用需要自行退出。


多端协同流程

以设备A的应用和设备B的应用进行多端协同为例,业务流程如下:


1.流转准备:设备A上的应用向流转任务管理服务注册一个流转回调:

Alt1-系统推荐流转:系统感知周边有可用设备后,主动为用户提供可选择流转的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。

Alt2-用户手动流转:系统在用户手动点击流转图标后,被动为用户提供可选择交互的设备信息,并在用户完成设备选择后回调通知应用开始流转,将用户选择的设备B的设备信息提供给应用。

2.流转进行:设备A上的应用通过调用分布式任务调度的能力,如startAbility, connectAbility等,向设备B的应用发起多端协同。流转中将流转状态上报到流转任务管理服务。

3.流转结束:用户通过设备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上没有安装相关应用,会提示流转失败。


相关文章
|
21天前
|
JavaScript 安全 前端开发
【HarmonyOS开发】ArkTS基础语法及使用(鸿蒙开发基础教程)
【HarmonyOS开发】ArkTS基础语法及使用(鸿蒙开发基础教程)
264 4
|
21天前
|
存储 数据安全/隐私保护
鸿蒙开发:自定义一个动态输入框
在鸿蒙开发中,如何实现这一效果呢,最重要的解决两个问题,第一个问题是,如何在上一个输入框输入完之后,焦点切换至下一个输入框中,第二个问题是,如何禁止已经输入的输入框的焦点,两个问题解决完之后,其他的就很是简单了。
45 13
鸿蒙开发:自定义一个动态输入框
|
24天前
|
小程序 测试技术 API
鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
本文详细介绍元服务的开发及上架全流程,涵盖元服务的特点、创建项目、服务卡片、签名打包、开发测试及上架审核等环节,帮助开发者轻松掌握从零开始开发并发布元服务的全过程。元服务以其轻量、免安装、易于使用等特点,成为未来服务提供的重要形式。
60 13
鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
|
29天前
|
Android开发
鸿蒙开发:自定义一个简单的标题栏
本身就是一个很简单的标题栏组件,没有什么过多的技术含量,有一点需要注意,当使用沉浸式的时候,注意标题栏的位置,需要避让状态栏。
鸿蒙开发:自定义一个简单的标题栏
|
26天前
|
传感器 数据处理 数据库
鸿蒙开发Hvigor插件动态生成代码
【11月更文挑战第13天】Hvigor 是鸿蒙开发中的构建系统插件,主要负责项目的构建、打包及依赖管理,并能根据预定义规则动态生成代码,如数据库访问、网络请求等,提高开发效率和代码一致性。适用于大型项目初始化和组件化开发。
|
24天前
|
Android开发 索引
鸿蒙开发:自定义一个车牌省份简称键盘
鸿蒙搞起来就比较的简单,直接一个Grid组件便可以搞定,最后的删除按钮,使用布局选项GridLayoutOptions便可轻松实现。
鸿蒙开发:自定义一个车牌省份简称键盘
|
26天前
|
安全 UED 开发者
鸿蒙开发:沉浸式效果实现
沉浸式效果实现后,一定要注意安全区域的内容避让,防止内容延伸后被导航条或者状态栏遮挡,具体是选择安全区域或者窗口管理方式,按照需求进行处理,如果仅仅是某个页面,直接安全区域即可。
鸿蒙开发:沉浸式效果实现
|
移动开发 Ubuntu 网络协议
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
175 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
|
XML Web App开发 开发框架
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
准备好鸿蒙开发环境后,接下来就需要创建鸿蒙项目,掌握项目的创建过程以及配置。项目创建好后,需要把项目运行在模拟器上,鸿蒙的模拟和安卓模拟器有些不同,鸿蒙提供远程模拟器和本地模拟器,通过登录华为账号登录在线模拟器,使用DevEco Studio可将项目部署到远程模拟器中。
1280 1
鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
|
存储 Ubuntu 前端开发
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
342 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)