有没有HarmonyOS鸿蒙Next类似苹果的App Extension组件,支持三方app嵌入ExtensionUI?

有没有HarmonyOS鸿蒙Next类似苹果的App Extension组件,支持三方app嵌入ExtensionUI? 苹果APP Extension组件链接https://developer.apple.com/documentation/extensionfoundation/appextension/

5 回复

尊敬的开发者,您好!

请问您是在什么样的业务场景中使用该能力,交互流程是怎样的,在哪一个环节遇到了问题?方便说明能力不满足可能带来的影响:什么时间用到?是否高频?有无三方库可以做到?若提供该能力,是否会造成大工作量返工?请您注意提供的内容不要包含您或第三方的非公开信息,如给您带来不便,敬请谅解。

更多关于有没有HarmonyOS鸿蒙Next类似苹果的App Extension组件,支持三方app嵌入ExtensionUI?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ArkTS卡片概述

以下内容介绍基于ArkTS声明式开发范式语言开发卡片。

亮点/特征

  1. 统一开发范式

    • ArkTS卡片统一了卡片和应用页面的开发范式,应用页面的布局可以直接复用到卡片布局中,提升开发体验和开发效率。具体请参考图1 卡片工程结构对比。

    图1 卡片工程结构对比

  2. 卡片能力增强

    • 新增了动效的能力:ArkTS卡片开放了属性动画显式动画的能力,使卡片的交互更加友好。
    • 新增了自定义绘制的能力:ArkTS卡片开放了Canvas画布组件的能力,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果。
    • 允许卡片中运行逻辑代码:开放逻辑代码运行能力后,部分业务逻辑可以在卡片内部实现,拓宽了业务适用场景。

实现原理

  • 卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置,当前仅系统应用可以作为卡片使用方。
  • 卡片提供方:提供卡片显示内容的应用,控制卡片的显示内容、控件布局以及控件点击事件。
  • 卡片管理服务:用于管理系统中所添加卡片的常驻代理服务,提供formProvider的接口能力,同时提供卡片对象的管理与使用以及卡片周期性刷新等能力。
  • 卡片渲染服务:用于管理卡片渲染实例,渲染实例与卡片使用方的卡片组件一一绑定。卡片渲染服务根据form_config.json配置的卡片信息运行widget.abc文件的卡片页面代码进行渲染,并将渲染后的数据发送至卡片使用方对应的卡片组件。

HarmonyOS Next提供ExtensionAbility机制,支持三方应用嵌入扩展功能。通过UIExtensionComponent组件可实现宿主应用加载三方提供的UI界面。该机制基于Stage模型,支持JS/ETS开发,使用ArkTS语言。具体涉及UIExtensionAbility生命周期管理和组件通信能力。

是的,HarmonyOS Next 提供了类似的功能,称为 “服务卡片”“原子化服务”

核心对应关系:

  • App Extension (UI类型,如Widget) 主要对应:服务卡片。这是一个独立的UI展示单元,可以嵌入到系统桌面或其他应用(作为“卡片提供方”)中,由三方应用开发并提供内容。
  • App Extension (功能类型) 的理念对应:原子化服务。这是一种免安装、即点即用的服务形态,其核心功能可以独立运行或被其他应用便捷调用。

具体实现方式:

  1. 服务卡片

    • 开发者可以创建一个FormExtensionAbility,它负责卡片的生命周期管理和数据更新。
    • 卡片UI使用ArkUI编写,有特定的组件规范和开发范式。
    • 卡片可以配置多种尺寸模板,并支持动态更新。
    • 用户可以将卡片添加到桌面,实现信息外显和快速交互。
  2. 跨应用UI共享与嵌入

    • HarmonyOS通过UIAbility组件Want机制实现跨应用拉起与交互。
    • 虽然不能像某些系统那样直接将一个应用的UI片段嵌入到另一个应用的进程空间内,但可以通过启动另一个应用的特定UIAbility(并可能传递数据)来无缝衔接功能与界面,实现类似“嵌入”的用户体验。这更符合HarmonyOS的安全和进程模型。

与苹果App Extension的主要区别:

  • 架构理念:HarmonyOS更强调“服务”的原子化和独立分发(原子化服务),以及UI的卡片化(服务卡片)。苹果的App Extension更侧重于在宿主应用上下文内扩展功能。
  • 集成方式:服务卡片主要集成于桌面系统。跨应用功能调用通过清晰的Ability拉起机制实现,而非在宿主应用内直接运行扩展代码。
  • 开发范式:需遵循HarmonyOS的Ability、ArkUI及卡片开发规范。

总结: 如果您希望实现三方应用提供UI组件供系统或其他应用桌面展示,应重点开发服务卡片。 如果您希望实现三方应用的功能能被其他应用便捷调用和衔接,应基于UIAbility原子化服务进行设计。

相关开发文档请查阅华为开发者官网的“服务卡片”与“原子化服务”部分。

回到顶部