0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙ArkUI-X平臺差異化:【運(yùn)行態(tài)差異化(@ohos.deviceInfo)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-25 16:37 ? 次閱讀

平臺差異化

簡介

跨平臺使用場景是一套ArkTS代碼運(yùn)行在多個(gè)終端設(shè)備上,如Android、iOS、OpenHarmony(含基于OpenHarmony發(fā)行的商業(yè)版,如HarmonyOS Next)。當(dāng)不同平臺業(yè)務(wù)邏輯不同,或使用了不支持跨平臺的API,就需要根據(jù)平臺不同進(jìn)行一定代碼差異化適配。當(dāng)前僅支持在代碼運(yùn)行態(tài)進(jìn)行差異化,接下來詳細(xì)介紹場景及如何差異化適配。

使用場景及能力

使用場景

平臺差異化適用于以下兩種典型場景:

  1. 自身業(yè)務(wù)邏輯不同平臺本來就有差異;
  2. 在OpenHarmony上調(diào)用了不支持跨平臺的API,這就需要在OpenHarmony上仍然調(diào)用對應(yīng)API,其他平臺通過Bridge橋接機(jī)制進(jìn)行差異化處理;
  3. 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]點(diǎn)擊或者復(fù)制轉(zhuǎn)到。

判斷平臺類型

可以通過let osName: string = deviceInfo.osFullName;獲取對應(yīng)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應(yīng)用平臺上業(yè)務(wù)邏輯
  } else if (osName.startsWith('Android')) {
    // Android應(yīng)用平臺上業(yè)務(wù)邏輯
  } else if (osName.startsWith('iOS')) {
    // iOS應(yīng)用平臺上業(yè)務(wù)邏輯
  }
}

非跨平臺API處理

在跨平臺工程中如果調(diào)用非跨平臺API,編譯時(shí)IDE會觸發(fā)攔截并報(bào)錯(cuò)。接下來以調(diào)用wifiManager.isWifiActive()判斷WiFi開關(guān)是否打開為例,這個(gè)API當(dāng)前是不支持跨平臺的。

示例代碼:

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

IDE報(bào)錯(cuò):

> 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

此時(shí)可以將涉及到的API寫到一個(gè)后綴為**.ts**文件,然后在不支持的API上面增加// @ts-ignore// @ts-nocheck屏蔽告警,開發(fā)者需要保證只在OpenHarmony應(yīng)用平臺上才運(yùn)行這一段邏輯,Android和iOS應(yīng)用平臺上可以借用Bridge橋接機(jī)制處理,示例代碼如下:

  1. 新建一個(gè)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. 根據(jù)不同平臺差異化邏輯,Android和iOS應(yīng)用平臺上通過[Bridge機(jī)制]橋接到對應(yīng)平臺的業(yè)務(wù)邏輯實(shí)現(xiàn)上:

checkTestWiFi(): void {
  let osName: string = deviceInfo.osFullName;
  console.log('osName = ' + osName);
  if (osName.startsWith('OpenHarmony')) {
    // OpenHarmony應(yīng)用平臺
    let isActive = WiFiUtil.isActive();
    this.message = isActive ? '已連接' : '未連接';
  } else {
    // Android和iOS應(yīng)用平臺上,中轉(zhuǎn)到原生
    let bridge = Bridge.createBridge('Bridge');
    bridge.callMethod('isWiFiActive').then((res) = > {
      // 業(yè)務(wù)邏輯處理...
    }).catch(() = > {

    })
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3917

    瀏覽量

    127036
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1966

    瀏覽量

    29962
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3635

    瀏覽量

    16059
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4359
收藏 人收藏

    評論

    相關(guān)推薦

    SPICE差異化

    SPICE差異化
    發(fā)表于 05-22 08:11

    如何將cadence17.2的原理圖進(jìn)行差異化對比?

    cadence17.2的原理圖進(jìn)行差異化對比怎么做,沒有找到那個(gè)下拉菜單呀
    發(fā)表于 09-20 04:40

    DevEco Studio 3.1差異化構(gòu)建打包,提升多版本應(yīng)用開發(fā)效率

    HarmonyOS應(yīng)用及服務(wù)的一站式集成開發(fā)環(huán)境。本次分享DevEco Studio 3.1上線的新特性-差異化構(gòu)建打包,定制多目標(biāo)構(gòu)建產(chǎn)物。 很多應(yīng)用需要根據(jù)具體業(yè)務(wù)來定制對應(yīng)場景的工程,舉個(gè)例子,同一個(gè)
    發(fā)表于 12-09 11:19

    寬帶差異化服務(wù)解決方案

    【摘要】 本文通過分析互聯(lián)網(wǎng)業(yè)務(wù)迅猛發(fā)展對運(yùn)營商帶來的機(jī)遇和挑戰(zhàn),提出寬帶差異化服務(wù)在寬帶接入、QoS、資源分配方面差異化的多種技術(shù)手段,說明在業(yè)務(wù)差異、服務(wù)
    發(fā)表于 05-16 10:01 ?0次下載

    寬帶差異化服務(wù)解決方案

    寬帶差異化服務(wù)解決方案摘要: 本文通過分析互聯(lián)網(wǎng)業(yè)務(wù)迅猛發(fā)展對運(yùn)營商帶來的機(jī)遇和挑戰(zhàn),提出寬帶差異化服務(wù)在寬帶接入、QoS、資源分配方面差異化
    發(fā)表于 05-23 11:12 ?18次下載

    Orange的IPTV挑戰(zhàn):建立非獨(dú)家內(nèi)容的差異化優(yōu)勢

    Orange的IPTV挑戰(zhàn):建立非獨(dú)家內(nèi)容的差異化優(yōu)勢 2010年1月19日 Strategy Analytics發(fā)布最新研究報(bào)告“Orange的IPTV挑戰(zhàn):建立非獨(dú)家內(nèi)容的差異化優(yōu)勢”。法國競爭委員會最近認(rèn)
    發(fā)表于 01-20 09:42 ?735次閱讀

    3G成敗還看差異化

    3G成敗還看差異化 在互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)及信息服務(wù)領(lǐng)域,我國電信企業(yè)3G發(fā)展同時(shí)還面臨蘋果、IBM、諾基亞、微軟、谷歌及廣電部門等強(qiáng)有力
    發(fā)表于 02-06 09:10 ?423次閱讀

    移動操作系統(tǒng)帶來差異化設(shè)計(jì)

    移動操作系統(tǒng)帶來差異化設(shè)計(jì)   移動設(shè)備市場一直以來都非?;鸨?,特別是具有蘋果的iPhone和Verizon Wireless公司的Droid的智能手機(jī)市場。這些平臺上的硬件
    發(fā)表于 04-24 12:02 ?1197次閱讀

    三個(gè)IC設(shè)計(jì)差異化的發(fā)展趨勢分析

    對于設(shè)計(jì)師來說,難的是如何讓自己的IC差異化,能給系統(tǒng)廠商帶來更多的好處,這里,結(jié)合領(lǐng)先半導(dǎo)體廠商的做法,總結(jié)三個(gè)IC設(shè)計(jì)差異化的趨勢。
    發(fā)表于 03-15 09:29 ?724次閱讀
    三個(gè)IC設(shè)計(jì)<b class='flag-5'>差異化</b>的發(fā)展趨勢分析

    差異化才是王道 這6款黑科技神機(jī)讓你與眾不同

    如今,智能手機(jī)行業(yè)同質(zhì)化嚴(yán)重的現(xiàn)象可以說是人盡皆知,行業(yè)人士紛紛高呼“我們需要差異化的創(chuàng)新!”大家都明白差異化才是王道,可是那些智能手機(jī)的產(chǎn)品經(jīng)理們,是否考慮過什么才是消費(fèi)者真正想要的差異化呢?
    發(fā)表于 10-13 17:53 ?702次閱讀

    一種隱私保護(hù)的差異化數(shù)據(jù)分享協(xié)議

    參與式感知中用戶不僅對數(shù)據(jù)匹配度有要求,對數(shù)據(jù)差異化也同樣有要求,為了既能滿足用戶對數(shù)據(jù)匹配度和差異化數(shù)據(jù)的需求,也能保護(hù)用戶的偏好隱私,提出了一種隱私保護(hù)的差異化數(shù)據(jù)分享協(xié)議。該協(xié)議首先將交互雙方
    發(fā)表于 01-07 10:41 ?0次下載

    安森美有哪些優(yōu)勢和差異化競爭策略

    眾多車用芯片供應(yīng)商似乎都提供相似的產(chǎn)品線,安森美有哪些優(yōu)勢和差異化競爭策略呢?
    的頭像 發(fā)表于 12-03 16:13 ?8084次閱讀
    安森美有哪些優(yōu)勢和<b class='flag-5'>差異化</b>競爭策略

    如何設(shè)計(jì)出具有差異化的芯片

    在開展下一代SoC設(shè)計(jì)的過程中,對客戶需求和市場需求的預(yù)測無疑是最主要的驅(qū)動因素,相信大家都希望設(shè)計(jì)出跟別家不一樣的、有賣點(diǎn)的產(chǎn)品,因此如何設(shè)計(jì)出具有差異化的芯片是開發(fā)者設(shè)計(jì)工作中的重中之重。
    的頭像 發(fā)表于 03-30 13:44 ?1508次閱讀

    鴻蒙ArkUI-X跨語言調(diào)用說明:平臺差異化【Android、ios動態(tài)化】

    ArkUI-X支持動態(tài)化,使用者可以根據(jù)自己需要動態(tài)發(fā)布跨平臺內(nèi)容,從而使跨平臺部分和宿主應(yīng)用進(jìn)行解耦。
    的頭像 發(fā)表于 05-23 14:38 ?735次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b>跨語言調(diào)用說明:<b class='flag-5'>平臺</b><b class='flag-5'>差異化</b>【Android、ios動態(tài)化】

    江蘇移動攜手華為率先完成全省范圍智能差異化體驗(yàn)保障商用驗(yàn)證

    近日,江蘇移動攜手華為率先完成全省范圍智能差異化體驗(yàn)保障商用驗(yàn)證,具備端到端智能差異化體驗(yàn)保障能力。
    的頭像 發(fā)表于 05-29 17:04 ?431次閱讀