99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

HarmonyOS開(kāi)發(fā)案例:【W(wǎng)eb組件實(shí)戰(zhàn)】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-28 17:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

使用ArkTS語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的免登錄過(guò)程,向大家介紹基本的cookie管理操作。主要包含以下功能:

  1. 獲取指定url對(duì)應(yīng)的cookie的值。
  2. 設(shè)置cookie。
  3. 清除所有cookie。
  4. 免登錄訪(fǎng)問(wèn)賬戶(hù)中心。

原理說(shuō)明

本應(yīng)用旨在說(shuō)明Web組件中cookie的管理操作。結(jié)合應(yīng)用彈框和免登錄兩種方式進(jìn)行講解。

  • 應(yīng)用彈框
    若用戶(hù)已通過(guò)“設(shè)置cookie”完成cookie寫(xiě)操作,點(diǎn)擊應(yīng)用首頁(yè)的“獲取cookie”按鈕,則應(yīng)用彈窗中會(huì)帶有“info=測(cè)試cookie寫(xiě)入”的信息。若用戶(hù)未進(jìn)行寫(xiě)操作,則彈窗信中無(wú)對(duì)應(yīng)信息。
  • 免登錄
    若用戶(hù)在應(yīng)用首頁(yè)完成登錄操作,則點(diǎn)擊“驗(yàn)證cookies”按鈕,界面會(huì)跳轉(zhuǎn)至“關(guān)于”界面;若用戶(hù)此前未完成登錄操作,則會(huì)跳轉(zhuǎn)至登錄界面。這里借助真實(shí)的登錄過(guò)程,體現(xiàn)了Web組件自動(dòng)存儲(chǔ)登錄后的會(huì)話(huà)cookie,并在整個(gè)應(yīng)用中生效的能力。

流程如圖所示:

相關(guān)概念

  • [Web]:提供網(wǎng)頁(yè)顯示能力的組件。
  • [WebCookie]:WebCookie可以控制Web組件中的cookie的各種行為,其中每個(gè)應(yīng)用中的所有Web組件共享一個(gè)WebCookie。通過(guò)controller方法中的getCookieManager方法可以獲取WebCookie對(duì)象,進(jìn)行后續(xù)的cookie管理操作。

相關(guān)權(quán)限

本篇Codelab使用的是在線(xiàn)網(wǎng)頁(yè),需添加網(wǎng)絡(luò)權(quán)限:ohos.permission.INTERNET。在配置文件module.json5中添加對(duì)應(yīng)信息:

{
  "module": {
    "name": "entry",
    ...
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

環(huán)境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開(kāi)發(fā)板類(lèi)型:[潤(rùn)和RK3568開(kāi)發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release。

環(huán)境搭建

完成本篇Codelab我們首先要完成開(kāi)發(fā)環(huán)境的搭建,本示例以RK3568開(kāi)發(fā)板為例,參照以下步驟進(jìn)行:

  1. [獲取OpenHarmony系統(tǒng)版本]:標(biāo)準(zhǔn)系統(tǒng)解決方案(二進(jìn)制)。以3.2 Release版本為例:
  2. 搭建燒錄環(huán)境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開(kāi)發(fā)板的燒錄](méi)
  3. 搭建開(kāi)發(fā)環(huán)境。
    1. 開(kāi)始前請(qǐng)參考[工具準(zhǔn)備],完成DevEco Studio的安裝和開(kāi)發(fā)環(huán)境配置。
    2. 開(kāi)發(fā)環(huán)境配置完成后,請(qǐng)參考[使用工程向?qū)創(chuàng)建工程(模板選擇“Empty Ability”)。
    3. 工程創(chuàng)建完成后,選擇使用[真機(jī)進(jìn)行調(diào)測(cè)]。
    4. 鴻蒙開(kāi)發(fā)指導(dǎo)文檔:[qr23.cn/FBD4cY]

代碼結(jié)構(gòu)解讀

本篇Codelab只對(duì)核心代碼進(jìn)行講解,完整代碼可以直接從gitee獲取。

├──entry/src/main/ets               // 代碼區(qū)
│  ├──common                         
│  │  ├──constants                   
│  │  │  └──CommonConstant.ets      // 常量類(lèi)
│  │  └──utils                       
│  │     ├──DialogUtil.ets          // 彈框工具類(lèi) 
│  │     └──Logger.ets              // 日志工具類(lèi)
│  ├──entryability                    
│  │  └──EntryAbility.ts            // 程序入口類(lèi)
│  ├──pages                          
│  │  ├──Verify.ets                 // 免登錄驗(yàn)證界面
│  │  └──WebIndex.ets               // 應(yīng)用首頁(yè)
│  └──view                                
│     └──LinkButton.ets             // 鏈接按鈕組件
└──entry/src/main/resources         // 應(yīng)用資源目錄

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789v直接拿`

搜狗高速瀏覽器截圖20240326151547.png

實(shí)現(xiàn)步驟

應(yīng)用首頁(yè)

首次打開(kāi)應(yīng)用時(shí),應(yīng)用首頁(yè)的Web組件內(nèi)呈現(xiàn)的是登錄界面。用戶(hù)完成登錄操作后,會(huì)跳轉(zhuǎn)至賬號(hào)中心界面。在用戶(hù)不點(diǎn)擊“刪除cookies”按鈕的情況下,用戶(hù)關(guān)閉并再次打開(kāi)應(yīng)用,首頁(yè)仍會(huì)跳轉(zhuǎn)至賬號(hào)中心界面。Web組件會(huì)自動(dòng)存儲(chǔ)所加載界面的cookie信息,包括登錄的cookie信息。用戶(hù)可以通過(guò)點(diǎn)擊“刪除cookies”按鈕,清除所有cookie信息。首頁(yè)呈現(xiàn)效果如圖:

首頁(yè)布局簡(jiǎn)單,由應(yīng)用標(biāo)題“Web組件”、內(nèi)部標(biāo)題“Web組件內(nèi)”、中間加載的網(wǎng)頁(yè)和底部一排按鈕組成。分別對(duì)應(yīng)兩個(gè)Text組件、一個(gè)Web組件以及一個(gè)Row容器組件。Row容器組件內(nèi)包含四個(gè)鏈接按鈕,為L(zhǎng)inkButton自定義組件。

// WebIndex.ets
Column() {
  Text($r('app.string.navigator_name'))
    ...

  Text($r('app.string.title_name'))
    ...

  Web({
    src: CommonConstants.USER_CENTER_URL,
    controller: this.controller
  })
    ...

  Row() {
    LinkButton({ buttonType: CookieOperation.GET_COOKIE, isNeedDivider: true })
    LinkButton({ buttonType: CookieOperation.SET_COOKIE, isNeedDivider: true })
    LinkButton({ buttonType: CookieOperation.DELETE_COOKIE, isNeedDivider: true })
    LinkButton({ buttonType: CookieOperation.VERIFY_COOKIE, isNeedDivider: false })
  }
  ...
}
...

自定義組件LinkButton由Text組件和Divider分隔器組件組成。最后一個(gè)按鈕沒(méi)有分隔器,通過(guò)isNeedDivider標(biāo)識(shí)符判斷是否需要添加Divider分隔器組件。

// LinkButton.ets
Row() {
  Text(this.buttonType)
    ...

  if (this.isNeedDivider) {
    Divider()
      ...
  }
}

每個(gè)按鈕被點(diǎn)擊時(shí),都是調(diào)用operationMethod函數(shù)。函數(shù)根據(jù)不同操作,執(zhí)行不同的代碼內(nèi)容。包括cookie的讀、寫(xiě)和刪除操作,以及頁(yè)面跳轉(zhuǎn)操作。

// LinkButton.ets
operationMethod() {
  switch (this.buttonType) {
    case CookieOperation.GET_COOKIE:
      try {
        let originCookie = web_webview.WebCookieManager.getCookie(CommonConstants.USER_CENTER_URL);
        showDialog(originCookie);
      } catch (error) {
        showDialog(`ErrorCode: ${error.code},  Message: ${error.message}`);
      }
      break;
    case CookieOperation.SET_COOKIE:
      try {
        web_webview.WebCookieManager.setCookie(CommonConstants.USER_ABOUT_URL, 'info=測(cè)試cookie寫(xiě)入');
        showDialog($r('app.string.write_success'));
      } catch (error) {
        showDialog(`ErrorCode: ${error.code},  Message: ${error.message}`);
      }
      break;
    case CookieOperation.DELETE_COOKIE:
      web_webview.WebCookieManager.deleteEntireCookie();
      let deleteMessage = $r('app.string.delete_success');
      showDialog(deleteMessage);
      break;
    case CookieOperation.VERIFY_COOKIE:
      router.pushUrl({
        url: CommonConstants.PAGE_VERIFY
      }).catch((err: Error) = > {
        Logger.error('[LinkButton] push url fail: ' + JSON.stringify(err));
      });
      break;
    default:
      break;
  }
}

免登錄驗(yàn)證頁(yè)

當(dāng)用戶(hù)在應(yīng)用內(nèi)已完成登錄操作,在應(yīng)用的其他位置使用Web組件訪(fǎng)問(wèn)需要相同授權(quán)的頁(yè)面時(shí),可免去多余的登錄操作。一個(gè)應(yīng)用中的所有Web組件共享一個(gè)WebCookie,因此一個(gè)應(yīng)用中Web組件存儲(chǔ)的cookie信息,也是可以共享的。界面呈現(xiàn)效果如圖:

該頁(yè)面布局同樣簡(jiǎn)單,由應(yīng)用導(dǎo)航標(biāo)題“Web組件”、內(nèi)部標(biāo)題“Web組件內(nèi)”、加載的網(wǎng)頁(yè)組成。分別對(duì)應(yīng)一個(gè)Navigator導(dǎo)航組件、一個(gè)Text組件和一個(gè)Web組件。Navigator導(dǎo)航組件類(lèi)型設(shè)置為返回(NavigationType.Back),內(nèi)容由返回圖標(biāo)和應(yīng)用標(biāo)題組成,呈水平排列展示。

// Verify.ets
Column() {
  Navigator({ target: CommonConstants.PAGE_INDEX, type: NavigationType.Back }) {
    Row() {
      Image($r('app.media.ic_back'))
        ...

      Text($r('app.string.navigator_name'))
        ...
    }
    ...
  }
  ...

  Text($r('app.string.title_name'))
    ...

  Web({
    src: CommonConstants.USER_ABOUT_URL,
    controller: this.controller
  })
    ...
}
...

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    30

    瀏覽量

    10611
  • WEB組件
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    751
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2620

    瀏覽量

    44063
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33090
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18628
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    HarmonyOS開(kāi)發(fā)案例:【Web組件實(shí)現(xiàn)抽獎(jiǎng)】

    基于ArkTS的聲明式開(kāi)發(fā)范式的樣例,主要介紹了Web組件如何加載本地和云端H5小程序。
    的頭像 發(fā)表于 05-09 18:31 ?1672次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)案</b>例:【<b class='flag-5'>Web</b><b class='flag-5'>組件</b>實(shí)現(xiàn)抽獎(jiǎng)】

    HarmonyOS開(kāi)發(fā)案例:【基礎(chǔ)組件Slider的使用】

    學(xué)習(xí)如何使用聲明式UI編程框架的基礎(chǔ)組件。本篇Codelab將會(huì)使用Image組件、Slider組件、Text組件共同實(shí)現(xiàn)一個(gè)可調(diào)節(jié)的風(fēng)車(chē)動(dòng)畫(huà)
    的頭像 發(fā)表于 05-10 16:01 ?1062次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)案</b>例:【基礎(chǔ)<b class='flag-5'>組件</b>Slider的使用】

    HarmonyOS開(kāi)發(fā)案例:【常用組件與布局】

    HarmonyOS ArkUI提供了豐富多樣的UI組件,您可以使用這些組件輕松地編寫(xiě)出更加豐富、漂亮的界面。
    的頭像 發(fā)表于 05-09 18:20 ?1790次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開(kāi)發(fā)案</b>例:【常用<b class='flag-5'>組件</b>與布局】

    「極速探索HarmonyOS NEXT 」閱讀體驗(yàn)】+Web組件

    ,則源于web開(kāi)發(fā)。盡管Web應(yīng)用在性能上略遜一籌,但由于其龐大的用戶(hù)使用基數(shù),在諸多場(chǎng)景下仍不可或缺。 在應(yīng)用中顯示 Web 頁(yè)面 在開(kāi)發(fā)
    發(fā)表于 03-10 10:39

    HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Web組件開(kāi)發(fā)體驗(yàn)

    ;) }}}*附件:HarmonyOSOpenHarmony應(yīng)用開(kāi)發(fā)-Web組件開(kāi)發(fā)體驗(yàn).docx示例效果:參
    發(fā)表于 12-12 15:14

    4天帶你上手HarmonyOS ArkUI開(kāi)發(fā)——《HarmonyOS ArkUI入門(mén)訓(xùn)練營(yíng)之健康生活實(shí)戰(zhàn)

    HarmonyOS ArkUI入門(mén)訓(xùn)練營(yíng)之健康飲食應(yīng)用》是面向入門(mén)開(kāi)發(fā)者打造的實(shí)戰(zhàn)課程系列。特邀華為終端BG高級(jí)開(kāi)發(fā)工程師作為本次訓(xùn)練營(yíng)講師,以健康飲食為例,開(kāi)展技術(shù)教學(xué)及
    發(fā)表于 01-05 11:49

    HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-類(lèi)Web開(kāi)發(fā)范式

    邏輯處理。UI組件與數(shù)據(jù)之間通過(guò)單向數(shù)據(jù)綁定的方式建立關(guān)聯(lián),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),UI界面自動(dòng)觸發(fā)更新。此種開(kāi)發(fā)方式,更接近Web前端開(kāi)發(fā)者的使用習(xí)慣,快速將已有的
    發(fā)表于 01-18 19:15

    HarmonyOS—使用Web組件加載頁(yè)面

    ??ohos.permission.INTERNET??網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限。 加載網(wǎng)絡(luò)頁(yè)面 開(kāi)發(fā)者可以在Web組件創(chuàng)建的時(shí)候指定默認(rèn)加載的網(wǎng)絡(luò)頁(yè)面 。在默認(rèn)頁(yè)面加載完成后,如果開(kāi)發(fā)者需要變更
    發(fā)表于 08-31 17:51

    HarmonyOS 應(yīng)用開(kāi)發(fā) Web 組件基本屬性應(yīng)用和事件

    一、Web組件概述 Web組件用于在應(yīng)用程序中顯示Web頁(yè)面內(nèi)容,為開(kāi)發(fā)者提供頁(yè)面加載、頁(yè)面交互
    發(fā)表于 09-15 15:28

    《labview入門(mén)與實(shí)戰(zhàn)開(kāi)發(fā)》經(jīng)典案例

    labview入門(mén)與實(shí)戰(zhàn)開(kāi)發(fā)案例100例書(shū)中的案例資料供大家學(xué)習(xí)
    發(fā)表于 01-11 18:10 ?184次下載

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS分布式應(yīng)用特征與挑戰(zhàn)

     HDC 2021華為開(kāi)發(fā)者大會(huì)HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS分布式應(yīng)用特征與挑戰(zhàn)
    的頭像 發(fā)表于 10-23 14:41 ?1948次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試技術(shù)與<b class='flag-5'>實(shí)戰(zhàn)</b>-<b class='flag-5'>HarmonyOS</b>分布式應(yīng)用特征與挑戰(zhàn)

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-華為ArkUI開(kāi)發(fā)框架和場(chǎng)景測(cè)試

    HDC 2021華為開(kāi)發(fā)者大會(huì)HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-華為ArkUI開(kāi)發(fā)框架和場(chǎng)景測(cè)試
    的頭像 發(fā)表于 10-23 15:16 ?2138次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試技術(shù)與<b class='flag-5'>實(shí)戰(zhàn)</b>-華為ArkUI<b class='flag-5'>開(kāi)發(fā)</b>框架和場(chǎng)景測(cè)試

    HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS自研圖形棧總結(jié)

    HDC 2021華為開(kāi)發(fā)者大會(huì) HarmonyOS測(cè)試技術(shù)與實(shí)戰(zhàn)-HarmonyOS自研圖形??偨Y(jié)
    的頭像 發(fā)表于 10-23 15:47 ?1861次閱讀
    <b class='flag-5'>HarmonyOS</b>測(cè)試技術(shù)與<b class='flag-5'>實(shí)戰(zhàn)</b>-<b class='flag-5'>HarmonyOS</b>自研圖形??偨Y(jié)

    華為開(kāi)發(fā)者分論壇HarmonyOS學(xué)生公開(kāi)課-OpenHarmony Codelabs開(kāi)發(fā)案

    2021華為開(kāi)發(fā)者分論壇HarmonyOS學(xué)生公開(kāi)課-OpenHarmony Codelabs開(kāi)發(fā)案
    的頭像 發(fā)表于 10-24 11:25 ?2171次閱讀
    華為<b class='flag-5'>開(kāi)發(fā)</b>者分論壇<b class='flag-5'>HarmonyOS</b>學(xué)生公開(kāi)課-OpenHarmony Codelabs<b class='flag-5'>開(kāi)發(fā)案</b>例

    HarmonyOS實(shí)戰(zhàn)組件化項(xiàng)目搭建

    ?本文將詳細(xì)講解HarmonyOs組件化項(xiàng)目搭建的全過(guò)程,帶領(lǐng)大家實(shí)現(xiàn)一個(gè)組件化項(xiàng)目。 項(xiàng)目創(chuàng)建 首先創(chuàng)建一個(gè)項(xiàng)目工程,點(diǎn)擊開(kāi)發(fā)工具DevEco-Stdio的****File 選項(xiàng),選
    的頭像 發(fā)表于 06-09 14:58 ?221次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實(shí)戰(zhàn)</b>:<b class='flag-5'>組件</b>化項(xiàng)目搭建