本文旨在深入探討華為鴻蒙HarmonyOS Next系統(截止目前API12)的技術細節,基於實際開發實踐進行總結。
主要作為技術分享與交流載體,難免錯漏,歡迎各位同仁提出寶貴意見和問題,以便共同進步。
本文為原創內容,任何形式的轉載必須註明出處及原作者。
一、引言
在上一篇部落格中,我們已經初步瞭解了 HarmonyOS Next 網路加速服務的基礎功能,包括開發準備、連線遷移、網路場景識別與質量評估等方面。這些基礎功能就像是構建網路最佳化大廈的基石,為我們進一步深入探索和最佳化網路效能奠定了堅實的基礎。而在這篇進階部落格中,我們將聚焦於弱網感知判決、應用傳輸體驗反饋以及網路加速服務的綜合應用,深入剖析其中的最佳化策略,並透過實際案例和資料對比展示其強大的作用,幫助大家在 HarmonyOS Next 網路開發的道路上更上一層樓。
二、弱網感知判決深入
(一)三種獲取方式詳解
- 監聽系統實時判決
- 原理:HarmonyOS Next 系統會根據網路場景識別資訊中的特定引數,如 NetworkScene.scene(weakSignal/congestion),直接判斷當前網路是否為弱網。當系統檢測到網路場景處於 weakSignal(弱訊號)或 congestion(擁塞)狀態時,就會立即判定為弱網環境。這就好比交通警察在路口實時觀察交通狀況,如果發現道路擁堵,就會立即採取相應的疏導措施。
- 程式碼示例(虛擬碼):
import { netQuality } from '@kit.NetworkBoostKit';
netQuality.on('netSceneChange', (list: Array<netQuality.NetworkScene>) => {
list.forEach((sceneInfo) => {
if (sceneInfo.scene === 'weakSignal' || sceneInfo.scene === 'congestion') {
console.log('系統實時判決為弱網環境');
// 在此處可以新增應用針對弱網環境的處理邏輯,如降低資料請求頻率等
}
});
});
- 監聽系統預測判決
- 原理:基於網路場景識別中的弱訊號預測資訊,如 NetworkScene.weakSignalPrediction,系統能夠提前預測即將進入弱網區域。這是透過對網路訊號的趨勢分析和歷史資料的學習來實現的,類似於天氣預報根據氣象資料預測未來天氣變化。當系統預測到弱訊號即將出現時,應用可以提前做好準備,如預載入部分資料或調整資料傳輸策略。
- 程式碼示例(虛擬碼):
import { netQuality } from '@kit.NetworkBoostKit';
netQuality.on('netSceneChange', (list: Array<netQuality.NetworkScene>) => {
list.forEach((sceneInfo) => {
if (sceneInfo.weakSignalPrediction) {
console.log('系統預測即將進入弱網區域');
// 應用可以在此處執行預載入資料或調整傳輸策略等操作
preloadData();
adjustTransmissionStrategy();
}
});
});
- 應用自定義判決
- 原理:應用可以根據網路質量評估資訊,如 NetworkQos(linkUpBandwidth/linkDownBandwidth/rttMs/linkUpBufferDelayMs/linkUpBufferCongestionPercent),自行設定門限值來判斷是否為弱網。開發者可以根據應用的具體需求和業務特點,靈活地定義弱網的標準。例如,對於實時性要求較高的視訊通話應用,可能會將較低的上行頻寬和較高的時延視為弱網條件。
- 程式碼示例(虛擬碼):
import { netQuality } from '@kit.NetworkBoostKit';
const customWeakNetThreshold = {
minLinkUpBandwidth: 100, // 自定義的上行頻寬最小值(單位:kbps)
maxRttMs: 500 // 自定義的往返時延最大值(單位:ms)
};
netQuality.on('netQosChange', (list: Array<netQuality.NetworkQos>) => {
list.forEach((qos) => {
if (qos.linkUpBandwidth < customWeakNetThreshold.minLinkUpBandwidth && qos.rttMs > customWeakNetThreshold.maxRttMs) {
console.log('應用自定義判決為弱網環境');
// 執行應用在弱網環境下的特定處理邏輯,如提示使用者網路不佳等
showWeakNetAlert();
}
});
});
(二)適用場景分析
- 監聽系統實時判決適用場景
- 適用於對網路狀態變化敏感且需要立即響應的應用,如線上遊戲。在遊戲過程中,一旦網路出現擁塞或弱訊號,玩家的操作體驗會受到嚴重影響。透過系統實時判決為弱網,遊戲可以立即暫停一些非關鍵的資料傳輸,如後臺更新,優先保證遊戲操作的流暢性,避免玩家因為網路卡頓而輸掉比賽。 - 監聽系統預測判決適用場景
- 對於影片播放類應用非常有用。當系統預測到即將進入弱網區域時,影片播放應用可以提前降低影片的解析度或者切換到較低位元速率的影片源,這樣在真正進入弱網環境時,使用者可以繼續流暢地觀看影片,而不會出現長時間的緩衝卡頓。例如,在使用者乘坐高鐵經過訊號較弱的區域時,影片應用可以提前做好準備,讓使用者的觀看體驗不受太大影響。 - 應用自定義判決適用場景
- 不同型別的應用對網路質量的要求差異很大。對於檔案上傳類應用,可能更關注上行頻寬;而對於網頁瀏覽類應用,可能更關注往返時延。應用自定義判決可以讓開發者根據應用的核心業務需求來精準定義弱網條件。比如,一個大型檔案上傳應用可以根據上行頻寬來判斷是否為弱網,如果頻寬低於一定值,就暫停上傳並提示使用者等待網路改善,避免因網路問題導致上傳失敗。
三、應用傳輸體驗反饋
(一)場景案例展示
以一個線上音樂播放應用為例。當使用者在收聽音樂時,如果網路出現波動,導致音樂播放卡頓,應用可以將卡頓資訊(如卡頓的持續時間、發生的頻率等)以及當前播放的音樂型別(如流行音樂、古典音樂等業務型別資訊)透過應用傳輸體驗反饋介面 reportQoe 通知給系統網路業務模組。系統收到反饋後,會分析網路情況,可能會調整音樂的緩衝策略,比如增加緩衝量,或者嘗試切換到更穩定的網路節點,以確保音樂播放的流暢性。
(二)介面詳細解析
reportQoe(appQoe: AppQoe): void
介面用於應用向系統反饋傳輸體驗資訊。其中,AppQoe
物件包含了服務型別(serviceType
)和體驗型別(qoeType
)等重要資訊。服務型別可以明確當前應用的業務型別,如音樂播放、視訊通話等,以便系統根據不同的業務型別採取針對性的最佳化措施。體驗型別則描述了傳輸體驗的具體情況,如卡頓(serverErr
)、流暢(goodQoe
)等。
(三)程式碼實現示例
- 匯入相關模組:
import { netQuality } from '@kit.NetworkBoostKit';
import { BusinessError } from '@kit.BasicServicesKit';
- 呼叫介面將應用傳輸體驗資訊通知給系統側:
try {
let serviceType: netQuality.ServiceType ='musicPlay'; // 假設為音樂播放業務型別
let qoeType: netQuality.BadQoeCause = 'buffering'; // 假設為緩衝卡頓問題
let appQoE: netQuality.AppQoe = {
serviceType,
qoeType
};
netQuality.reportQoe(appQoE);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
四、網路加速服務綜合應用
(一)多模組協同案例
考慮一個社交應用,它包含了文字聊天、圖片上傳、視訊通話等多個功能模組。在網路加速服務的支援下,當使用者在弱網環境下進行文字聊天時,連線遷移功能可以確保在網路切換時聊天訊息不丟失,網路場景識別和弱網感知判決功能可以及時調整聊天訊息的傳送頻率,避免因網路擁塞導致訊息傳送失敗。對於圖片上傳功能,應用可以根據網路質量評估資訊,在網路較好時選擇高畫質圖片上傳,在弱網時自動壓縮圖片後上傳,同時利用應用傳輸體驗反饋功能,根據上傳的成功率和速度調整後續的上傳策略。在視訊通話模組,系統透過連線遷移和弱網預測,提前做好影片質量的調整準備,如降低解析度、減少幀率等,保證視訊通話的穩定性。
(二)效能提升資料對比
透過對上述社交應用在啟用和未啟用網路加速服務時進行效能測試,得到以下資料對比(資料為模擬示例):
功能 | 未啟用網路加速服務 | 啟用網路加速服務 |
---|---|---|
文字聊天訊息丟失率 | 5% | 1% |
圖片上傳平均耗時(弱網環境) | 15s | 8s |
視訊通話卡頓率 | 30% | 10% |
從資料可以明顯看出,網路加速服務在各個功能模組上都顯著提升了效能,為使用者帶來了更好的使用體驗。這充分展示了 HarmonyOS Next 網路加速服務在實際應用中的強大最佳化能力,也為我們開發者在最佳化應用網路效能方面提供了有力的工具和參考。希望大家能夠在自己的專案中充分利用這些功能,打造出更加優秀的 HarmonyOS Next 應用。 |