<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

HarmonyOS開發案例:【Web組件實戰】

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

介紹

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

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

原理說明

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

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

流程如圖所示:

相關概念

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

相關權限

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

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

環境搭建

軟件要求

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

硬件要求

  • 開發板類型:[潤和RK3568開發板]。
  • OpenHarmony系統:3.2 Release。

環境搭建

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

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

代碼結構解讀

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

├──entry/src/main/ets               // 代碼區
│  ├──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

實現步驟

應用首頁

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

首頁布局簡單,由應用標題“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函數。函數根據不同操作,執行不同的代碼內容。包括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信息,也是可以共享的。界面呈現效果如圖:

該頁面布局同樣簡單,由應用導航標題“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
  })
    ...
}
...

審核編輯 黃宇

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

    關注

    0

    文章

    29

    瀏覽量

    10362
  • WEB組件
    +關注

    關注

    0

    文章

    2

    瀏覽量

    673
  • 鴻蒙
    +關注

    關注

    55

    文章

    1636

    瀏覽量

    42120
  • HarmonyOS
    +關注

    關注

    79

    文章

    1845

    瀏覽量

    29266
  • OpenHarmony
    +關注

    關注

    23

    文章

    3303

    瀏覽量

    15159
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發基礎-Web組件之cookie操作

    }) ... } ... 本文章主要是對鴻蒙開發當中ArkTS語言的基礎應用實戰,Web組件里的cookie操作。更多的鴻蒙應用開發
    發表于 01-14 21:31

    HarmonyOS應用開發資料(Svg組件

    1、HarmonyOS應用開發-Svg組件circle  該組件從API version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。2、
    發表于 03-17 14:49

    HarmonyOS/OpenHarmony應用開發-Web組件開發體驗

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

    4天帶你上手HarmonyOS ArkUI開發——《HarmonyOS ArkUI入門訓練營之健康生活實戰

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

    HarmonyOS/OpenHarmony應用開發-類Web開發范式

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

    HarmonyOS—使用Web組件加載頁面

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

    HarmonyOS 應用開發 Web 組件基本屬性應用和事件

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

    《labview入門與實戰開發》經典案例

    labview入門與實戰開發案例100例書中的案例資料供大家學習
    發表于 01-11 18:10 ?169次下載

    HarmonyOS測試技術與實戰-HarmonyOS分布式應用特征與挑戰

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

    HarmonyOS測試技術與實戰-HarmonyOS圖形棧測試技術深度解析

    HDC 2021華為開發者大會HarmonyOS測試技術與實戰-HarmonyOS圖形棧測試技術深度解析
    的頭像 發表于 10-23 15:09 ?1286次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰</b>-<b class='flag-5'>HarmonyOS</b>圖形棧測試技術深度解析

    HarmonyOS測試技術與實戰-HarmonyOS圖形棧整體架構和測試能力

    HDC 2021華為開發者大會HarmonyOS測試技術與實戰-HarmonyOS圖形棧整體架構和測試能力
    的頭像 發表于 10-23 15:11 ?1230次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰</b>-<b class='flag-5'>HarmonyOS</b>圖形棧整體架構和測試能力

    HarmonyOS測試技術與實戰-華為ArkUI開發框架和場景測試

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

    HarmonyOS測試技術與實戰-2D負載模型

    HDC 2021華為開發者大會 HarmonyOS測試技術與實戰-2D負載模型
    的頭像 發表于 10-23 15:19 ?1033次閱讀
    <b class='flag-5'>HarmonyOS</b>測試技術與<b class='flag-5'>實戰</b>-2D負載模型

    HarmonyOS測試技術與實戰-HarmonyOS自研圖形??偨Y

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

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

    2021華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案
    的頭像 發表于 10-24 11:25 ?1613次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>