0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙ArkUI-X平台差异化:【运行态差异化(@ohos.deviceInfo)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-05-25 16:37 次阅读

平台差异化

简介

跨平台使用场景是一套ArkTS代码运行在多个终端设备上,如AndroidiOSOpenHarmony(含基于OpenHarmony发行的商业版,如HarmonyOS Next)。当不同平台业务逻辑不同,或使用了不支持跨平台的API,就需要根据平台不同进行一定代码差异化适配。当前仅支持在代码运行态进行差异化,接下来详细介绍场景及如何差异化适配。

使用场景及能力

使用场景

平台差异化适用于以下两种典型场景:

  1. 自身业务逻辑不同平台本来就有差异;
  2. 在OpenHarmony上调用了不支持跨平台的API,这就需要在OpenHarmony上仍然调用对应API,其他平台通过Bridge桥接机制进行差异化处理;
  3. 开发前请熟悉鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]点击或者复制转到。

判断平台类型

可以通过let osName: string = deviceInfo.osFullName;获取对应OS名字,该接口已支持跨平台,不同平台上其返回值如下:

  • OpenHarmony上,osName等于OpenHarmony XXX
  • Android上,osName等于Android XXX
  • iOS上,osName等于iOS XXX

示例如下:

test() {
  let osName: string = deviceInfo.osFullName;
  console.log('osName = ' + osName);
  if (osName.startsWith('OpenHarmony')) {
    // OpenHarmony应用平台上业务逻辑
  } else if (osName.startsWith('Android')) {
    // Android应用平台上业务逻辑
  } else if (osName.startsWith('iOS')) {
    // iOS应用平台上业务逻辑
  }
}

非跨平台API处理

在跨平台工程中如果调用非跨平台API,编译时IDE会触发拦截并报错。接下来以调用wifiManager.isWifiActive()判断WiFi开关是否打开为例,这个API当前是不支持跨平台的。

示例代码:

test2(){
   let isActive = wifiManager.isWifiActive();
  }

IDE报错:

> hvigor ERROR: Failed :feature:default@CompileArkTS... 
> hvigor ERROR: ArkTS Compiler Error
ERROR: ArkTS:ERROR File: D:/work/git/play-arkuix/Test_ACE/feature/src/main/ets/pages/Index.ets:64:31
 'isWifiActive' can't support crossplatform application.

COMPILE RESULT:FAIL {ERROR:2}
> hvigor ERROR: BUILD FAILED in 10 s 753 ms

此时可以将涉及到的API写到一个后缀为**.ts**文件,然后在不支持的API上面增加// @ts-ignore// @ts-nocheck屏蔽告警,开发者需要保证只在OpenHarmony应用平台上才运行这一段逻辑,Android和iOS应用平台上可以借用Bridge桥接机制处理,示例代码如下:

  1. 新建一个WiFiUtil.ts,并忽略告警:
import wifiManager from '@ohos.wifiManager'

export class WiFiUtil {
  static isActive(): boolean {
    //@ts-ignore
    return wifiManager.isWifiActive();
  }
}

`HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿`

搜狗高速浏览器截图20240326151450.png
2. 根据不同平台差异化逻辑,Android和iOS应用平台上通过[Bridge机制]桥接到对应平台的业务逻辑实现上:

checkTestWiFi(): void {
  let osName: string = deviceInfo.osFullName;
  console.log('osName = ' + osName);
  if (osName.startsWith('OpenHarmony')) {
    // OpenHarmony应用平台
    let isActive = WiFiUtil.isActive();
    this.message = isActive ? '已连接' : '未连接';
  } else {
    // Android和iOS应用平台上,中转到原生
    let bridge = Bridge.createBridge('Bridge');
    bridge.callMethod('isWiFiActive').then((res) = > {
      // 业务逻辑处理...
    }).catch(() = > {

    })
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3882

    浏览量

    126011
  • HarmonyOS
    +关注

    关注

    79

    文章

    1911

    浏览量

    29498
  • OpenHarmony
    +关注

    关注

    24

    文章

    3445

    浏览量

    15333
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    187

    浏览量

    4306
收藏 人收藏

    评论

    相关推荐

    SPICE差异化

    SPICE差异化
    发表于 05-22 08:11

    如何将cadence17.2的原理图进行差异化对比?

    cadence17.2的原理图进行差异化对比怎么做,没有找到那个下拉菜单呀
    发表于 09-20 04:40

    5G如何满足垂直行业的差异化业务需求

    行业应用。本文结合5G标准的发展和演进,分析5G如何满足垂直行业的差异化业务需求。  一、引言  4G和智能手机的快速发展给我们的日常工作和生活带来了极大的便利,使社会运行管理更加高效。4G的快速发展
    发表于 12-03 14:16

    DevEco Studio 3.1差异化构建打包,提升多版本应用开发效率

    HarmonyOS应用及服务的一站式集成开发环境。本次分享DevEco Studio 3.1上线的新特性-差异化构建打包,定制多目标构建产物。 很多应用需要根据具体业务来定制对应场景的工程,举个例子,同一个
    发表于 12-09 11:19

    宽带差异化服务解决方案

    【摘要】 本文通过分析互联网业务迅猛发展对运营商带来的机遇和挑战,提出宽带差异化服务在宽带接入、QoS、资源分配方面差异化的多种技术手段,说明在业务差异、服务
    发表于 05-16 10:01 0次下载

    宽带差异化服务解决方案

    宽带差异化服务解决方案摘要: 本文通过分析互联网业务迅猛发展对运营商带来的机遇和挑战,提出宽带差异化服务在宽带接入、QoS、资源分配方面差异化
    发表于 05-23 11:12 18次下载

    Orange的IPTV挑战:建立非独家内容的差异化优势

    Orange的IPTV挑战:建立非独家内容的差异化优势 2010年1月19日 Strategy Analytics发布最新研究报告“Orange的IPTV挑战:建立非独家内容的差异化优势”。法国竞争委员会最近认
    发表于 01-20 09:42 676次阅读

    3G成败还看差异化

    3G成败还看差异化 在互联网、移动互联网及信息服务领域,我国电信企业3G发展同时还面临苹果、IBM、诺基亚、微软、谷歌及广电部门等强有力
    发表于 02-06 09:10 393次阅读

    移动操作系统带来差异化设计

    移动操作系统带来差异化设计   移动设备市场一直以来都非常火爆,特别是具有苹果的iPhone和Verizon Wireless公司的Droid的智能手机市场。这些平台上的硬件
    发表于 04-24 12:02 1141次阅读

    三个IC设计差异化的发展趋势分析

    对于设计师来说,难的是如何让自己的IC差异化,能给系统厂商带来更多的好处,这里,结合领先半导体厂商的做法,总结三个IC设计差异化的趋势。
    发表于 03-15 09:29 693次阅读
    三个IC设计<b class='flag-5'>差异化</b>的发展趋势分析

    差异化才是王道 这6款黑科技神机让你与众不同

    如今,智能手机行业同质化严重的现象可以说是人尽皆知,行业人士纷纷高呼“我们需要差异化的创新!”大家都明白差异化才是王道,可是那些智能手机的产品经理们,是否考虑过什么才是消费者真正想要的差异化呢?
    发表于 10-13 17:53 631次阅读

    一种隐私保护的差异化数据分享协议

    参与式感知中用户不仅对数据匹配度有要求,对数据差异化也同样有要求,为了既能满足用户对数据匹配度和差异化数据的需求,也能保护用户的偏好隐私,提出了一种隐私保护的差异化数据分享协议。该协议首先将交互双方
    发表于 01-07 10:41 0次下载

    安森美有哪些优势和差异化竞争策略

    众多车用芯片供应商似乎都提供相似的产品线,安森美有哪些优势和差异化竞争策略呢?
    的头像 发表于 12-03 16:13 7797次阅读
    安森美有哪些优势和<b class='flag-5'>差异化</b>竞争策略

    鸿蒙ArkUI-X跨语言调用说明:平台差异化【Android、ios动态化】

    ArkUI-X支持动态化,使用者可以根据自己需要动态发布跨平台内容,从而使跨平台部分和宿主应用进行解耦。
    的头像 发表于 05-23 14:38 225次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b>跨语言调用说明:<b class='flag-5'>平台</b><b class='flag-5'>差异化</b>【Android、ios动态化】

    江苏移动携手华为率先完成全省范围智能差异化体验保障商用验证

    近日,江苏移动携手华为率先完成全省范围智能差异化体验保障商用验证,具备端到端智能差异化体验保障能力。
    的头像 发表于 05-29 17:04 230次阅读