本文旨在深入探討華為鴻蒙HarmonyOS Next系統(截止目前API12)的技術細節,基於實際開發實踐進行總結。
主要作為技術分享與交流載體,難免錯漏,歡迎各位同仁提出寶貴意見和問題,以便共同進步。
本文為原創內容,任何形式的轉載必須註明出處及原作者。
一、引言
在當今數字化時代,網路已經成為人們生活和工作中不可或缺的一部分。對於移動裝置而言,流暢、高效的網路連線體驗更是至關重要。HarmonyOS Next 作為華為鴻蒙系統的下一代演進版本,其網路加速服務為開發者提供了強大的工具,幫助提升應用在網路方面的效能表現。透過 Network Boost Kit,開發者能夠更好地應對各種網路環境,為使用者帶來更優質的網路體驗。這不僅有助於提高應用的競爭力,還能滿足使用者對於快速、穩定網路連線的需求,從而在移動應用市場中脫穎而出。
二、網路加速概述
(一)介紹 Network Boost Kit
Network Boost Kit 是 HarmonyOS Next 中專門用於最佳化網路效能的一套開發工具包。它就像是一個網路最佳化的“魔法盒”,隱藏在系統的深處,默默地為應用的網路連線保駕護航。開發者可以利用這個工具包中的各種功能,對應用的網路行為進行精細化的管理和最佳化。
(二)功能模組列舉
- 連線遷移:在網路環境發生變化時,例如從 WiFi 切換到蜂窩網路,或者主卡切換到副卡,連線遷移功能能夠確保應用的網路連線不受太大影響,實現平滑過渡。這就好比你在開車行駛過程中,從一條高速公路切換到另一條高速公路,連線遷移功能會幫助你自動調整路線,讓你的旅程不會因為道路的變化而中斷。
- 網路場景識別:系統能夠實時識別當前的網路場景,比如是處於網路擁塞狀態,還是在弱訊號區域。這就像給應用裝上了一雙“眼睛”,可以隨時觀察周圍的網路環境,以便做出相應的決策。
- 網路質量評估:可以獲取網路的各種質量指標,如上下行頻寬、時延等資訊。這就如同醫生給病人做體檢一樣,能夠準確地瞭解網路的“健康狀況”,為後續的最佳化提供依據。
- 應用傳輸體驗反饋:應用可以將自身的傳輸體驗反饋給系統,系統根據這些反饋資訊進行針對性的最佳化。這就像是你在餐廳用餐後給服務員反饋菜品的口味,餐廳會根據你的意見改進菜品一樣,透過這種互動,實現網路加速的良性迴圈。
三、開發準備
(一)許可權申請及配置
在應用使用 Network Boost Kit 能力之前,必須確保已經獲取了相應的許可權。就像你要進入一個高階俱樂部,需要出示會員卡一樣,許可權就是應用進入網路加速服務“俱樂部”的門票。所需的許可權為 ohos.permission.GET_NETWORK_INFO,它允許應用獲取裝置的網路資訊。配置許可權的步驟如下:
- 開啟專案中的 entry/src/main 路徑下的 module.json5 檔案。
- 在檔案中找到 "module" 欄位,在其內部新增 "requestPermissions" 陣列。
- 在陣列中新增一個物件,物件的 "name" 屬性設定為 "ohos.permission.GET_NETWORK_INFO"。示例程式碼如下:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
]
}
}
四、連線遷移功能
(一)場景意義
在現實生活中,我們經常會遇到網路環境變化的情況。比如你在乘坐地鐵時,WiFi 訊號逐漸變弱,手機自動切換到蜂窩網路。如果沒有連線遷移功能,應用可能會出現短暫的卡頓甚至中斷連線,影響使用者體驗。而 HarmonyOS Next 的連線遷移功能就是為了解決這個問題,讓應用在網路切換時能夠快速適應新的網路環境,保持業務的連續性。
(二)介面講解
- 訂閱連線遷移:
on(type: 'handoverChange', callback: Callback<HandoverInfo>): void
這個介面用於訂閱連線遷移通知。當系統檢測到網路連線即將發生遷移時,會呼叫傳入的回撥函式,並傳遞HandoverInfo
物件。這個物件包含了連線遷移的相關資訊,如遷移是否開始(handoverStart
)和遷移是否完成(handoverComplete
)等。 - 取消訂閱連線遷移:
off(type: 'handoverChange', callback?: Callback<HandoverInfo>): void
當應用不再需要接收連線遷移通知時,可以使用這個介面取消訂閱。如果不傳遞迴調函式引數,則會取消所有與該型別相關的訂閱。
(三)開發步驟示例
- 首先,匯入 Network Boost Kit 模組:
import { netHandover } from '@kit.NetworkBoostKit';
import { BusinessError } from '@kit.BasicServicesKit';
- 然後,透過訂閱的方式獲取連線遷移資訊:
try {
netHandover.on('handoverChange', (info: netHandover.HandoverInfo) => {
if (info.handoverStart) {
// 連線遷移開始回撥,應用按照 HandoverStart 的建議調整數傳策略
console.info('handover start');
} else if (info.handoverComplete) {
// 連線遷移完成回撥,應用按照 HandoverComplete 的建議進行調速和重建恢復
console.info('handover complete');
}
});
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
- 當應用業務流程結束,不需要系統側連線遷移資訊時,取消監聽:
try {
netHandover.off('handoverChange');
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
五、網路場景識別與質量評估
(一)場景介紹
網路場景識別就像是給應用賦予了“環境感知”能力。例如,在一個大型商場中,WiFi 使用者眾多,網路可能會出現擁塞情況。應用透過網路場景識別功能,可以及時瞭解到當前處於擁塞狀態,從而調整資料傳輸策略,比如降低影片播放的解析度,以保證播放的流暢性。網路質量評估則是進一步量化網路的狀況,讓應用能夠根據具體的指標進行最佳化。
(二)介面說明
- 訂閱網路場景資訊狀態變化:
on(type: 'netSceneChange', callback: Callback<Array<NetworkScene>>): void
應用呼叫這個介面後,當系統網路場景的實時資訊或預測資訊發生變化時,會回撥傳入的函式,並傳遞包含NetworkScene
物件陣列的引數。NetworkScene
物件包含了網路場景的各種資訊,如場景型別(scene
)、弱訊號預測資訊(weakSignalPrediction
)等。 - 取消訂閱網路場景資訊狀態變化:
off(type: 'netSceneChange', callback?: Callback<Array<NetworkScene>>): void
用於取消對網路場景資訊狀態變化的訂閱。
(三)開發流程展示
- 匯入相關模組:
import { netQuality } from '@kit.NetworkBoostKit';
import { BusinessError } from '@kit.BasicServicesKit';
- 訂閱網路場景識別資訊:
try {
netQuality.on('netSceneChange', (list: Array<netQuality.NetworkScene>) => {
if (list.length > 0) {
list.forEach((sceneInfo) => {
// 網路場景識別回撥資訊處理
if (sceneInfo.scene == 'congestion') {
// 網路擁塞分支處理
console.log('網路擁塞,採取相應措施');
}
if (sceneInfo.weakSignalPrediction) {
// 存在弱訊號預測資訊,對弱訊號預測資訊進行處理
console.log('預測將進入弱訊號區域,提前準備');
}
});
}
});
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
- 取消訂閱(當不再需要時):
try {
netQuality.off('netSceneChange');
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
透過以上對 HarmonyOS Next 網路加速服務基礎功能的全面解析,我們開發者可以初步掌握如何利用 Network Boost Kit 提升應用的網路效能。在後續的開發中,還可以進一步探索其更高階的功能,為使用者打造更加出色的網路體驗。希望這篇文章能為大家在 HarmonyOS Next 網路開發的道路上點亮一盞明燈,祝大家開發順利!