RM新时代网站-首页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS開發(fā)案例:【Web組件實戰(zhàn)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-28 17:30 ? 次閱讀

介紹

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

  1. 獲取指定url對應的cookie的值。
  2. 設置cookie。
  3. 清除所有cookie。
  4. 免登錄訪問賬戶中心。

原理說明

本應用旨在說明Web組件中cookie的管理操作。結合應用彈框和免登錄兩種方式進行講解。

  • 應用彈框
    若用戶已通過“設置cookie”完成cookie寫操作,點擊應用首頁的“獲取cookie”按鈕,則應用彈窗中會帶有“info=測試cookie寫入”的信息。若用戶未進行寫操作,則彈窗信中無對應信息。
  • 免登錄
    若用戶在應用首頁完成登錄操作,則點擊“驗證cookies”按鈕,界面會跳轉至“關于”界面;若用戶此前未完成登錄操作,則會跳轉至登錄界面。這里借助真實的登錄過程,體現(xiàn)了Web組件自動存儲登錄后的會話cookie,并在整個應用中生效的能力。

流程如圖所示:

相關概念

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

相關權限

本篇Codelab使用的是在線網頁,需添加網絡權限:ohos.permission.INTERNET。在配置文件module.json5中添加對應信息:

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

環(huán)境搭建

軟件要求

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

硬件要求

  • 開發(fā)板類型:[潤和RK3568開發(fā)板]。
  • OpenHarmony系統(tǒng):3.2 Release。

環(huán)境搭建

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

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

代碼結構解讀

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

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

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

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

實現(xiàn)步驟

應用首頁

首次打開應用時,應用首頁的Web組件內呈現(xiàn)的是登錄界面。用戶完成登錄操作后,會跳轉至賬號中心界面。在用戶不點擊“刪除cookies”按鈕的情況下,用戶關閉并再次打開應用,首頁仍會跳轉至賬號中心界面。Web組件會自動存儲所加載界面的cookie信息,包括登錄的cookie信息。用戶可以通過點擊“刪除cookies”按鈕,清除所有cookie信息。首頁呈現(xiàn)效果如圖:

首頁布局簡單,由應用標題“Web組件”、內部標題“Web組件內”、中間加載的網頁和底部一排按鈕組成。分別對應兩個Text組件、一個Web組件以及一個Row容器組件。Row容器組件內包含四個鏈接按鈕,為LinkButton自定義組件。

// 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分隔器組件組成。最后一個按鈕沒有分隔器,通過isNeedDivider標識符判斷是否需要添加Divider分隔器組件。

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

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

每個按鈕被點擊時,都是調用operationMethod函數(shù)。函數(shù)根據不同操作,執(zhí)行不同的代碼內容。包括cookie的讀、寫和刪除操作,以及頁面跳轉操作。

// 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=測試cookie寫入');
        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;
  }
}

免登錄驗證頁

當用戶在應用內已完成登錄操作,在應用的其他位置使用Web組件訪問需要相同授權的頁面時,可免去多余的登錄操作。一個應用中的所有Web組件共享一個WebCookie,因此一個應用中Web組件存儲的cookie信息,也是可以共享的。界面呈現(xiàn)效果如圖:

該頁面布局同樣簡單,由應用導航標題“Web組件”、內部標題“Web組件內”、加載的網頁組成。分別對應一個Navigator導航組件、一個Text組件和一個Web組件。Navigator導航組件類型設置為返回(NavigationType.Back),內容由返回圖標和應用標題組成,呈水平排列展示。

// 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
  })
    ...
}
...

審核編輯 黃宇

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

    關注

    0

    文章

    30

    瀏覽量

    10407
  • WEB組件
    +關注

    關注

    0

    文章

    2

    瀏覽量

    690
  • 鴻蒙
    +關注

    關注

    57

    文章

    2339

    瀏覽量

    42805
  • HarmonyOS
    +關注

    關注

    79

    文章

    1973

    瀏覽量

    30143
  • OpenHarmony
    +關注

    關注

    25

    文章

    3713

    瀏覽量

    16254
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發(fā)案例:【Web組件實現(xiàn)抽獎】

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

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

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

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

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

    HarmonyOS/OpenHarmony應用開發(fā)-Web組件開發(fā)體驗

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

    4天帶你上手HarmonyOS ArkUI開發(fā)——《HarmonyOS ArkUI入門訓練營之健康生活實戰(zhàn)

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

    HarmonyOS/OpenHarmony應用開發(fā)-類Web開發(fā)范式

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

    HarmonyOS—使用Web組件加載頁面

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

    HarmonyOS 應用開發(fā) Web 組件基本屬性應用和事件

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

    《labview入門與實戰(zhàn)開發(fā)》經典案例

    labview入門與實戰(zhàn)開發(fā)案例100例書中的案例資料供大家學習
    發(fā)表于 01-11 18:10 ?183次下載

    HarmonyOS測試技術與實戰(zhàn)-HarmonyOS分布式應用特征與挑戰(zhàn)

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

    HarmonyOS測試技術與實戰(zhàn)-應用評分工具

     HDC 2021華為開發(fā)者大會HarmonyOS測試技術與實戰(zhàn)-應用評分工具演示
    的頭像 發(fā)表于 10-23 14:55 ?1369次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰(zhàn)</b>-應用評分工具

    HarmonyOS測試技術與實戰(zhàn)-UX測試服務

    HDC 2021華為開發(fā)者大會HarmonyOS測試技術與實戰(zhàn)-UX測試服務
    的頭像 發(fā)表于 10-23 15:00 ?1187次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰(zhàn)</b>-UX測試服務

    HarmonyOS測試技術與實戰(zhàn)-華為ArkUI開發(fā)框架和場景測試

    HDC 2021華為開發(fā)者大會HarmonyOS測試技術與實戰(zhàn)-華為ArkUI開發(fā)框架和場景測試
    的頭像 發(fā)表于 10-23 15:16 ?1893次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰(zhàn)</b>-華為ArkUI<b class='flag-5'>開發(fā)</b>框架和場景測試

    HarmonyOS測試技術與實戰(zhàn)-HarmonyOS自研圖形棧總結

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

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

    2021華為開發(fā)者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發(fā)案
    的頭像 發(fā)表于 10-24 11:25 ?1913次閱讀
    華為<b class='flag-5'>開發(fā)</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發(fā)案</b>例
    RM新时代网站-首页