目录

  • 🦁 一. 写在前面
  • 🦁 二. 什么是元服务?
  • 2.1 元服务与小程序、传统应用的区别
  • 2.1.1 运行环境不同
  • 2.1.2 安装方式不同
  • 2.1.3 跨平台能力不同
  • 2.1.4 入口位置不同
  • 2.1.5 API权限不同
  • 2.1.6 分享能力不同
  • 2.2 开发上的差异
  • 🦁 三. 元服务的创新应用场景
  • 3.1 智能出行体验
  • 3.2 无缝购物与支付
  • 3.3 跨设备内容分享
  • 🦁 四. 元服务开发实战
  • 4.1 创建元服务项目
  • 4.2 创建服务卡片
  • 4.3 配置元服务信息
  • 🦁 五. 写在最后

权限管理

🦁 一. 写在前面

无需安装,即用即走,鸿蒙元服务正在重塑我们的数字生活体验。

在传统的手机生态中,我们早已习惯了这样一个流程:找到一个应用,下载安装,然后才能使用它的功能。这个过程中,我们不仅要消耗流量和存储空间,还需要耐心等待。而鸿蒙元服务的出现彻底改变了这一模式,它的出现让服务随时可用,无需安装,真正实现了“服务找人”而非“人找服务”。
现在我们来探索一下这个元服务创新实践。

在这里插入图片描述

🦁 二. 什么是元服务?

元服务是HarmonyOS提供的一种面向未来的服务提供方式,它与传统应用共同构成了鸿蒙生态的“一体两面”。想象一下,
当你在清晨醒来,手机负一屏自动显示今天的天气、行程安排和待办事项;

在这里插入图片描述

当你走进咖啡厅,无需打开任何应用,只需碰一碰就能完成点餐和支付;

在这里插入图片描述

当你需要查询股票信息,无需下载完整的金融应用,一个卡片就能提供实时行情;

在这里插入图片描述

这就是元服务带来的体验革新。
元服务具有几个鲜明的特点:即开即用、即用即走、无需安装,通过系统级入口和小艺交互创新,让用户在合适的场景、合适的时间获取合适的服务。

在这里插入图片描述

2.1 元服务与小程序、传统应用的区别

很多人在初次接触元服务时,会联想到微信小程序,但它们之间存在本质区别。

2.1.1 运行环境不同

  • 鸿蒙元服务:运行在操作系统层面,是鸿蒙系统原生能力的一部分,体验上与应用无异。

  • 微信小程序:运行在微信这个“超级应用”内部,相当于一个应用中的功能,环境受到微信的限制。

  • 传统应用:直接运行在操作系统上,拥有独立的进程和完整的应用形态。

    2.1.2 安装方式不同

  • 鸿蒙元服务和微信小程序:都是“免安装”的,用户无需从应用商店下载和安装完整的应用包,实现了“即用即走”。

  • 传统应用:必须经过下载、安装、确认权限等步骤,才能使用。

    2.1.3 跨平台能力不同

  • 鸿蒙元服务:目前主要服务于鸿蒙生态内的设备,如手机、平板、手表、车机等,可以实现跨设备的无缝流转。

  • 微信小程序:具备很强的跨平台能力,可以在Android和iOS系统的微信中运行。

  • 传统应用:通常需要为不同操作系统(如Android、iOS)分别开发不同的版本。

    2.1.4 入口位置不同

  • 鸿蒙元服务:入口非常丰富且深入系统层面,例如桌面的服务卡片、负一屏、小艺建议、智慧搜索等,服务可以主动触达用户。

  • 微信小程序:入口主要集中在微信内部,如聊天首页下拉、发现页、扫码、公众号关联等,相对封闭。

  • 传统应用:入口最直接,就是桌面上的应用图标。

    在这里插入图片描述

    2.1.5 API权限不同

  • 鸿蒙元服务:可以直接调用部分系统原生的API(如传感器、分布式能力),能力比小程序更强,但为了保证轻量化和安全性,权限不如传统应用完整。

  • 微信小程序:只能使用微信封装和提供的API,能力受限于微信平台。

  • 传统应用:在用户授权后,可以调用操作系统提供的绝大部分原生API,能力最全面。

    2.1.6 分享能力不同

  • 鸿蒙元服务:主要通过鸿蒙生态的AppLinking进行分享,可以跨设备无缝接续服务。

  • 微信小程序:主要通过小程序码、微信好友或群聊分享,依赖微信的社交关系链。

  • 传统应用:通常通过应用链接或系统级的分享菜单进行分享。

2.2 开发上的差异

不仅以上这些差异,另外在开发上也很大差异。
首先,元服务开发受到严格的包体积限制(单包≤2MB,总包≤10MB),这倒逼开发者必须精心架构,专注于核心功能以确保轻量与快启。其次,在能力上,元服务仅能调用部分系统API,这一限制是出于对安全、稳定和性能的全局考量,开发者需据此审慎规划功能。最后,其形态与分发方式也更为独特,元服务以“卡片”作为核心载体,能通过系统负一屏、小艺建议等场景化入口主动“推送”给用户,实现了从“人找应用”到“服务找人”的根本性转变。

🦁 三. 元服务的创新应用场景

元服务的价值在特定场景下尤为突出,以下是几个典型的创新应用:

3.1 智能出行体验

当你预订机票后,元服务会在乘机前、乘机当日到航班落地的整个过程中,通过实况窗实时分发服务。它会提醒你值机、通知航班变动、提供电子登机牌,甚至在落地后引导你领取行李。这一切都无需你主动打开任何应用,服务会在最合适的时机自动呈现。

3.2 无缝购物与支付

在鸿蒙生态中,停车支付变得异常简单。当驾驶鸿蒙智行车辆进入支持“捷停车”的停车场时,鸿蒙手机会主动提示停车信息,实时展示停车计费和跳费时间,在车内即可完成人脸识别支付。

进入中国石油加油站时,鸿蒙座舱会基于位置感知自动弹出“免下车加油”卡片,摄像头自动识别油枪编号,车机自动匹配订单,用户可以直接人脸识别支付,全程无需下车。

3.3 跨设备内容分享

鸿蒙的“碰一碰”功能在HarmonyOS 6上得到了全新升级。现在,只需相互一碰,上划一次,就能同时将内容分享给多位好友。例如,好友聚会时拍的合影或视频、聚会场所的WiFi,或者鸿蒙版哔哩哔哩的优质内容,都可以通过这种方式高清无损地分享,而且无需流量。更有趣的是,在鸿蒙电脑上,基于鸿蒙独创的屏幕智感交互技术,可以感知手机触碰状态,把手机顶部轻贴电脑屏幕就能实现碰一碰分享。
比如,手机轻触电脑端的WPS界面即可将图片插入PPT、轻触剪映可将视频素材导入素材库,大幅提升了工作效率。

🦁 四. 元服务开发实战

4.1 创建元服务项目

在DevEco Studio中创建项目时,选择"Atomic Service"模板,这是元服务的开发模板。AGC(AppGallery Connect)中需要先创建元服务项目,然后获取并配置项目。在AppScope文件下的resources > base > element > string.json中修改"app_name"值,这个值表示应用名称。在app.json5中修改"vender"值,这个值表示应用程序供应商。

4.2 创建服务卡片

元服务的一个重要特征就是卡片化的服务呈现。我们可以创建不同尺寸的卡片:

// 显示区域
Text(this.currentInput)
  .fontSize(40)
  .width('90%')
  .textAlign(TextAlign.End)
  .margin({ bottom: 20, top: 32 })

// 操作按钮区域
Grid() {
  // 第一行
  GridItem() { Button('C').onClick(() => this.clear()) }        // 清除
  GridItem() { Button('±').onClick(() => this.toggleSign()) }  // 符号切换
  GridItem() { Button('%').onClick(() => this.percentage()) }  // 百分比
  GridItem() { Button('÷').onClick(() => this.setOperator('/')) } // 除法

  // 数字 7-9
  GridItem() { Button('7').onClick(() => this.appendNumber('7')) }
  GridItem() { Button('8').onClick(() => this.appendNumber('8')) }
  GridItem() { Button('9').onClick(() => this.appendNumber('9')) }
  GridItem() { Button('×').onClick(() => this.setOperator('*')) } // 乘法

  // 数字 4-6
  GridItem() { Button('4').onClick(() => this.appendNumber('4')) }
  GridItem() { Button('5').onClick(() => this.appendNumber('5')) }
  GridItem() { Button('6').onClick(() => this.appendNumber('6')) }
  GridItem() { Button('-').onClick(() => this.setOperator('-')) } // 减法

  // 数字 1-3
  GridItem() { Button('1').onClick(() => this.appendNumber('1')) }
  GridItem() { Button('2').onClick(() => this.appendNumber('2')) }
  GridItem() { Button('3').onClick(() => this.appendNumber('3')) }
  GridItem() { Button('+').onClick(() => this.setOperator('+')) } // 加法

  // 底部行
  GridItem({  }) {
    Button('0').onClick(() => this.appendNumber('0')) // 数字 0
  }
  GridItem() { Button('.').onClick(() => this.addDecimal()) } // 小数点
  GridItem() { Button('=').onClick(() => this.calculate()) } // 等于
}
.columnsTemplate('1fr 1fr 1fr 1fr')
.rowsGap(15)
.columnsGap(15)
.padding(20)
.width('100%')
.height('100%')

卡片创建完成后,需要在应用的主页面中实现业务逻辑:

// 数字输入处理
private appendNumber(num: string) {
  if (this.currentInput === '0') {
    this.currentInput = num;
  } else {
    this.currentInput += num;
  }
}

// 运算符设置
private setOperator(op: string) {
  this.storedValue = parseFloat(this.currentInput);
  this.operator = op;
  this.currentInput = '0';
}

// 计算逻辑
private calculate() {
  const current = parseFloat(this.currentInput);
  switch (this.operator) {
    case '+': this.result = this.storedValue + current; break;
    case '-': this.result = this.storedValue - current; break;
    case '*': this.result = this.storedValue * current; break;
    case '/':
      if (current !== 0) {
        this.result = this.storedValue / current;
      }
      break;
  }
  this.currentInput = this.result.toString();
  this.storedValue = 0;
  this.operator = '';
}

// 清除功能
private clear() {
  this.currentInput = '0';
  this.result = 0;
  this.storedValue = 0;
  this.operator = '';
}

// 其他辅助功能
private toggleSign() {
  this.currentInput = (-parseFloat(this.currentInput)).toString();
}

private percentage() {
  this.currentInput = (parseFloat(this.currentInput) / 100).toString();
}

private addDecimal() {
  if (!this.currentInput.includes('.')) {
    this.currentInput += '.';
  }
}

4.3 配置元服务信息

在module.json5文件中,需要配置元服务的基本信息:

{
  name: "CalculatorModule",
  version: "1.0.0",
  description: "A simple calculator component using JavaScript.",
  main: "./program/CalculatorFile.js", 
  components: {
    Calculator: "./program/CalculatorFile.js" 
  },
  dependencies: {
     "some-ui-library": "^1.0.0"
  },
  config: {    
      theme: "default"
  }
}

在这里插入图片描述

🦁 五. 写在最后

鸿蒙元服务代表了移动应用生态的一次范式转移——从“应用为中心”转向“服务为中心”。它通过免安装、卡片化、智能分发等特性,让数字服务更加无缝、自然地融入我们的生活。对于开发者而言,元服务降低了开发门槛和分发成本;对于用户而言,元服务提供了更加便捷、高效的服务体验。

随着鸿蒙生态的不断完善,元服务有望成为未来数字生活的重要基石,让我们拭目以待。


在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐