【HarmonyOS】應(yīng)用開發(fā)第十章-HarmonyOS原子化服務(wù)_第1頁
【HarmonyOS】應(yīng)用開發(fā)第十章-HarmonyOS原子化服務(wù)_第2頁
【HarmonyOS】應(yīng)用開發(fā)第十章-HarmonyOS原子化服務(wù)_第3頁
【HarmonyOS】應(yīng)用開發(fā)第十章-HarmonyOS原子化服務(wù)_第4頁
【HarmonyOS】應(yīng)用開發(fā)第十章-HarmonyOS原子化服務(wù)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十一章HarmonyOS原子化服務(wù)武漢大學(xué)計(jì)算機(jī)學(xué)院趙小剛緒論在萬物互聯(lián)時(shí)代,人均持有設(shè)備量不斷攀升,設(shè)備和場(chǎng)景的多樣性,使應(yīng)用開發(fā)變得更加復(fù)雜、應(yīng)用入口更加豐富。在此背景下,應(yīng)用提供方和用戶迫切需要一種新的服務(wù)提供方式,使應(yīng)用開發(fā)更簡(jiǎn)單、服務(wù)(如聽音樂、打車等)的獲取和使用更便捷。為此,HarmonyOS除支持傳統(tǒng)方式的需要安裝的應(yīng)用外,還支持提供特定功能的免安裝的應(yīng)用(即原子化服務(wù))。目錄原子化服務(wù)定義原子化服務(wù)體驗(yàn)原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)分享原子化服務(wù)定義原子化服務(wù)是HarmonyOS提供的一種面向未來的服務(wù)提供方式,是有獨(dú)立入口的(用戶可通過點(diǎn)擊方式直接觸發(fā))、免安裝的(無需顯式安裝,由系統(tǒng)程序框架后臺(tái)安裝后即可使用)、可為用戶提供一個(gè)或多個(gè)便捷服務(wù)的用戶應(yīng)用程序形態(tài)。原子化服務(wù)由1個(gè)或多個(gè)HAP包組成,1個(gè)HAP包對(duì)應(yīng)1個(gè)FA或1個(gè)PA。每個(gè)FA或PA均可獨(dú)立運(yùn)行,完成1個(gè)特定功能;1個(gè)或多個(gè)功能(對(duì)應(yīng)FA或PA)完成1個(gè)特定的便捷服務(wù)。原子化服務(wù)特性隨處可及服務(wù)發(fā)現(xiàn):原子化服務(wù)可在服務(wù)中心發(fā)現(xiàn)并使用。智能推薦:原子化服務(wù)可以基于合適場(chǎng)景被主動(dòng)推薦給用戶使用,或在服務(wù)中心發(fā)現(xiàn)。服務(wù)直達(dá)原子化服務(wù)支持免安裝使用。服務(wù)卡片:支持用戶無需打開原子化服務(wù)便可獲取服務(wù)內(nèi)重要信息的展示和動(dòng)態(tài)變化??缭O(shè)備原子化服務(wù)支持運(yùn)行在1+8+N設(shè)備上,如手機(jī)、平板等設(shè)備。支持跨設(shè)備分享:例如接入華為分享后,用戶可分享原子化服務(wù)給好友支持跨端遷移和協(xié)同原子化服務(wù)體驗(yàn)原子化服務(wù)定義原子化服務(wù)體驗(yàn)原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)分享原子化服務(wù)體驗(yàn)

服務(wù)中心原子化服務(wù)流轉(zhuǎn)原子化服務(wù)分享服務(wù)中心服務(wù)中心為用戶提供統(tǒng)一的原子化服務(wù)查看、搜索、收藏和管理功能。原子化服務(wù)流轉(zhuǎn)

原子化服務(wù)流轉(zhuǎn)的觸發(fā)方式有系統(tǒng)推薦流轉(zhuǎn)和用戶手動(dòng)流轉(zhuǎn)。系統(tǒng)推薦流轉(zhuǎn):用戶使用應(yīng)用程序時(shí),所處環(huán)境中存在使用體驗(yàn)更優(yōu)的可選設(shè)備,則系統(tǒng)自動(dòng)為用戶推薦該設(shè)備,用戶可確認(rèn)是否啟動(dòng)流轉(zhuǎn)。原子化服務(wù)流轉(zhuǎn)

用戶手動(dòng)流轉(zhuǎn):用戶可以手動(dòng)選擇合適的設(shè)備進(jìn)行流轉(zhuǎn)。用戶點(diǎn)擊圖標(biāo)后,會(huì)調(diào)起系統(tǒng)提供的流轉(zhuǎn)面板。面板中會(huì)展示出用戶應(yīng)用程序的信息及可流轉(zhuǎn)的設(shè)備,引導(dǎo)用戶進(jìn)行后續(xù)的流轉(zhuǎn)操作。原子化服務(wù)流轉(zhuǎn)流轉(zhuǎn)的技術(shù)方案跨端遷移:指在A端運(yùn)行的用戶應(yīng)用程序,遷移到B端上并從遷移時(shí)刻A端狀態(tài)繼續(xù)運(yùn)行,然后A端用戶應(yīng)用程序退出。多端協(xié)同:指多端上的不同F(xiàn)A/PA同時(shí)運(yùn)行、或者接替運(yùn)行實(shí)現(xiàn)完整的業(yè)務(wù);或者,多端上的相同F(xiàn)A/PA同時(shí)運(yùn)行實(shí)現(xiàn)完整的業(yè)務(wù)。原子化服務(wù)分享通過分享的方式,將原子化服務(wù)分享到其它設(shè)備上,用戶確認(rèn)后可直接免安裝啟動(dòng)服務(wù)。用戶可在原子化服務(wù)內(nèi)選擇分享,打開“華為分享”開關(guān)后,將原子化服務(wù)分享給附近同樣打開了“華為分享”開關(guān)的好友,好友點(diǎn)擊確認(rèn)后直接啟動(dòng)服務(wù)。新浪新聞服務(wù)分享原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)定義原子化服務(wù)體驗(yàn)原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)分享原子化開發(fā)基礎(chǔ)開發(fā)總體要求服務(wù)卡片定義運(yùn)作機(jī)制卡片提供方主要回調(diào)JS卡片語法基礎(chǔ)開發(fā)總體要求免安裝的HAP包不能超過10MB,以提供快速響應(yīng)的體驗(yàn)。超過此大小的HAP包不符合免安裝要求,也無法在服務(wù)中心露出。通過DevEcoStudio工程向?qū)?chuàng)建原子化服務(wù),ProjectType字段選擇“Service”。對(duì)于原子化服務(wù)升級(jí)場(chǎng)景:版本更新時(shí)要保持免安裝屬性。如果新版本不支持免安裝,將不允許新版本上架發(fā)布。HarmonyOS2.0以上版本。開發(fā)總體要求

如果某便捷服務(wù)的入口需要在服務(wù)中心露出,則該服務(wù)對(duì)應(yīng)HAP包必須包含F(xiàn)A,且FA中必須指定一個(gè)唯一的mainAbility(定位為用戶操作入口),mainAbility必須為PageAbility。同時(shí),mainAbility中至少配置2*2(小尺寸)規(guī)格的默認(rèn)服務(wù)卡片(也可以同時(shí)提供其他規(guī)格的卡片)及該便捷服務(wù)對(duì)應(yīng)的基礎(chǔ)信息(包括圖標(biāo)、名稱、描述、快照),這些內(nèi)容均在config.json中的ability對(duì)象中進(jìn)行定義。"name":"com.whu.myapplicationjscard.MainAbility","icon":"$media:icon","description":"$string:mainability_description","formsEnabled":true,"label":"$string:entry_MainAbility","type":"page",服務(wù)卡片定義服務(wù)卡片(以下簡(jiǎn)稱“卡片”)是FA的一種界面展示形式,將FA的重要信息或操作前置到卡片,以達(dá)到服務(wù)直達(dá),減少體驗(yàn)層級(jí)的目的。卡片常用于嵌入到其他應(yīng)用(當(dāng)前只支持系統(tǒng)應(yīng)用)中作為其界面的一部分顯示,并支持拉起頁面,發(fā)送消息等基礎(chǔ)的交互功能。服務(wù)卡片包含以下三部分:卡片提供方:提供卡片顯示內(nèi)容的HarmonyOS應(yīng)用或原子化服務(wù),控制卡片的顯示內(nèi)容、控件布局以及控件點(diǎn)擊事件??ㄆ褂梅剑猴@示卡片內(nèi)容的宿主應(yīng)用,控制卡片在宿主中展示的位置??ㄆ芾矸?wù):用于管理系統(tǒng)中所添加卡片的常駐代理服務(wù),包括卡片對(duì)象的管理與使用,以及卡片周期性刷新等。運(yùn)作機(jī)制卡片提供方主要回調(diào)函數(shù)JS卡片語法基礎(chǔ)數(shù)據(jù)綁定:JS頁面中的數(shù)據(jù)綁定是體現(xiàn)在.js文件中,而JS卡片中的數(shù)據(jù)綁定是體現(xiàn)到.json文件中,這是最主要區(qū)別。事件綁定:卡片僅支持click通用事件,事件的定義只能是直接命令式,事件定義必須包含action字段,用以說明事件類型??ㄆС謨煞N事件類型:跳轉(zhuǎn)事件(router)和消息事件(message)。跳轉(zhuǎn)事件可以跳轉(zhuǎn)到卡片提供方的應(yīng)用;消息事件可以將開發(fā)者自定義信息傳遞給卡片提供方。跳轉(zhuǎn)事件中若定義了params字段,則在被拉起應(yīng)用的onStart()回調(diào)的intent參數(shù)中,可用"params"作為key將跳轉(zhuǎn)事件定義的params字段的值取到。原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)定義原子化服務(wù)體驗(yàn)原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)分享原子化服務(wù)開發(fā)進(jìn)階卡片結(jié)構(gòu)目錄卡片資源訪問卡片配置文件卡片實(shí)戰(zhàn)卡片結(jié)構(gòu)目錄卡片資源訪問卡片中的資源訪問分為三類:JS模塊資源,應(yīng)用資源和系統(tǒng)資源。應(yīng)用資源在卡片工程的css文件中,通過“@app.type.resource_id”的形式引用應(yīng)用資源;在hml和json文件中,通過“{{$r('app.type.resource_id')}}”的形式引用應(yīng)用資源,各個(gè)字段的含義與css文件相同。系統(tǒng)資源在hml/css/json文件中,可以引用系統(tǒng)預(yù)置資源,包括顏色、圓角和圖片類型的資源。在卡片工程的css文件中,通過“@sys.type.resource_id”的形式引用系統(tǒng)資源。資源引用示例<divclass="container-inner"><textclass="title"style="background-color:{{$r('app.color.my_background_color')}}">{{$t('strings.title')}}</text><textclass="detail_text"style="background-color:{{$r('app.color.my_foreground_color')}}">{{$t('strings.detail')}}</text></div>{"color":[{"name":"my_background_color","value":"#ffff0000"},{"name":"my_foreground_color","value":"#ff0000ff"}]}卡片配置文件創(chuàng)建成功后,在config.json的module中會(huì)生成js模塊,用于對(duì)應(yīng)卡片的js相關(guān)資源。"js":[{"pages":["pages/index/index"],"name":"widget","window":{"designWidth":720,"autoDesignWidth":true},"type":"form"}]"forms":[{"jsComponentName":"widget","isDefault":true,"scheduledUpdateTime":"10:30","defaultDimension":"2*2","name":"widget","description":"Thisisaservicewidget","colorMode":"auto","type":"JS","supportDimensions":["2*2"],"updateEnabled":true,"updateDuration":1}],"launchType":"standard"}],卡片實(shí)戰(zhàn)新建卡片卡片內(nèi)容刷新卡片頁面跳轉(zhuǎn)卡片消息傳遞卡片事件觸發(fā)新建卡片卡片信息配置卡片內(nèi)容刷新updateForm(updateFormId,newFormBindingData(zsonObject))卡片頁面跳轉(zhuǎn)在前面clock1x2卡片的頁面布局文件的第一行中,我們定義了一個(gè)點(diǎn)擊事件:<divclass="container"onclick="routerEvent">該事件會(huì)激發(fā)json文件中的routerEvent回調(diào)事件,定義在action對(duì)象中"actions":{"routerEvent":{"action":"router","bundleName":"ohos.samples.jsfacard","abilityName":"ohos.samples.jsfacard.ClockAbility","params":{"message":"adddetail"}}卡片消息傳遞在.hml文件中定義onclick事件<divclass="container"onclick="activeEvent">json文件中定義actions{"data":{},"actions":{"activeEvent":{"action":"message","bundleName":"ohos.samples.jsfacard","abilityName":"ohos.samples.jsfacard.MainAbility","params":{"message":"jscardtemplateadddetail"}}}}@OverrideprotectedvoidonTriggerFormEvent(longformId,Stringmessage){LogU(TAG,"onTriggerFormEvent:messgeage="+message);super.onTriggerFormEvent(formId,message);

}卡片事件觸發(fā)卡片事件的觸發(fā)是指在卡片中的點(diǎn)擊事件引發(fā)卡片上數(shù)據(jù)的變化,該過程就等于卡片消息傳遞+卡片內(nèi)容刷新。<imagesrc="/common/{{status}}.svg"onclick="messageEvent"class="status-image"></image>@OverrideprotectedvoidonTriggerFormEvent(longformId,Stringmessage){ZSONObjectzsonObject=newZSONObject();if(isStatus){zsonObject.put(STATUS,PAUSE);isStatus=false;}else{zsonObject.put(STATUS,PLAY);isStatus=true;}FormBindingDataformBindingData=newFormBindingData(zsonObject);updateForm(formId,formBindingData);}原子化服務(wù)分享

原子化服務(wù)定義原子化服務(wù)體驗(yàn)原子化服務(wù)開發(fā)基礎(chǔ)原子化服務(wù)開發(fā)進(jìn)階原子化服務(wù)分享原子化服務(wù)分享原子化服務(wù)所提供的便捷服務(wù),可以通過接入華為分享實(shí)現(xiàn)近距離快速分享,使便捷服務(wù)可以精準(zhǔn)快速的推送至接收方,降低用戶觸達(dá)服務(wù)的成本,提升用戶體驗(yàn)。相比于傳統(tǒng)的社交軟件分享接收方無需提前安裝承載服務(wù)的安裝包,即可享受原生的服務(wù)體驗(yàn)。一般是服務(wù)端使用ServiceStub接口,客戶端使用CallbackProxy接口,即“代理-樁”模式。服務(wù)分享方為服務(wù)端,服務(wù)接收方為客戶端。開發(fā)步驟1.集成IDL接口,用于建立分享方與華為分享的交互通道,完成后續(xù)服務(wù)分享過程。創(chuàng)建IAbilityConnection連接2.在java目錄的應(yīng)用包下創(chuàng)建ShareFaManager類,用于管理分享方與華為分享的連接通道和數(shù)據(jù)交互。publicclassShareFaManager{privatefinalIAbilityConnectionmConnection=newIAbilityConnection(){@OverridepublicvoidonAbilityConnectDone(ElementNameelementName,IRemoteObjectiRemoteObject,inti){mHandler.postTask(()->{mShareService=newHwShareServiceProxy(iRemoteObject);}}@OverridepublicvoidonAbilityDisconnectDone(ElementNameelementName,inti){}}privatefinalHwShareCallbackStubmFaCallback=newHwShareCallbackStub("HwShareCallbackStub"){@OverridepublicvoidnotifyState(intstate)throwsRemoteException{mHandler.postTask(()->{if(mSharePacMap!=null){shareFaInfo();}}}publicstaticsynchronizedShareFaManagergetInstance(Contextcontext){}分享卡片&啟動(dòng)應(yīng)用publicvoidshareFaInfo(StringappId,PacMapExpacMap){mAppId=appId;mSharePacMap=pacMap;mHandler.removeTask(mTask);shareFaInfo();bindShareService();}privatevoidbindShareService(){Intentintent=newIntent();Operationoperation=newIntent.OperationBuilder().withDeviceId("").withBundleName(SHARE_PKG_NAME).withAction(SHARE_ACTION).withFlags(Intent.FLAG_NOT_OHOS_COMPONENT).build();intent.setOperation(operation);mContext.connectAbility(intent,mConnection);}封裝分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論