博客 / 詳情

返回

HarmonyOS 6實操: 來去電展示企業聯繫人信息

背景介紹

今年6月份HDC大會在一個技術展台跟華為架構師交流時他給介紹了HarmonyOS提供的企業服務能力,在用户接聽撥打電話時,頁面顯示已安裝企業應用的聯繫人信息,方便用户識別來去電人信息,快速回應,增強企業內部溝通效率。由於工作場景確實2B業務挺重,聽了很感興趣,之前沒有任何手機系統提供這種能力,還專門做了手環設備,用户在接聽電話時,手環設備獲取通知信息,提取手機號調用服務端獲取同事信息提高交流效率。晚上回酒店後第一時間查看了對應文檔,接入很簡單,能力超強大。

系統能力介紹

HarmonyOS 從5.0.2(14)開始,提供了CallerInfoQueryExtensionAbility來去電信息查詢擴展Ability,提供通話來去電頁面顯示企業聯繫人信息的能力。當有外撥電話或者接聽來電時,系統回拉起自定義的CallerInfoQueryExtensionAbility,CallerInfoQueryExtensionAbility是輕量級獨立子進程,不允許喚醒主進程,進程存在最長時間為2秒,超時後自動銷燬。這樣設計一方面是出去安全考慮,另一方面出於體驗考慮,如果不是獨立進程,拉起主進程如果比較耗時的話,可能電話都已經掛斷了還沒有開始查詢用户信息。

自定義的CallerInfoQueryExtensionAbility實現CallerInfoQueryExtensionAbility中的onQueryCallerInfo方法,onQueryCallerInfo方法會傳入播出或接聽的手機號,根據手機號查詢本地數據庫或者網絡接口獲取手機號對應同事信息,以Promise方式異步返回CallerInfo,CallerInfo包含以下信息:

名稱 類型 只讀 可選 説明
contactName string 聯繫人姓名:為保證頁面最佳顯示效果,字數建議限制在20字以內
employeeId string 工號:為保證頁面最佳顯示效果,字數建議限制在20字以內
department string 部門:為保證頁面最佳顯示效果,字數建議限制在20字以內
position string 職位:為保證頁面最佳顯示效果,字數建議限制在20字以內

根據查詢到的業務信息構造CallerInfo返回給系統展示,這樣就可以直接看到手機號對應的用户名稱等信息。

實現方案

申請權限

CallerInfoQueryExtensionAbility需求場景面向企業,僅供企業應用開發者接入。企業應用首先需要進行接入申請,企業應用開發者將申請信息發送至公共郵箱agconnect@huawei.com
郵件標題:【申請公司名】—企業來電顯示能力—Developer ID
郵件內容需包括:開發者接入企業來電顯示能力的應用使用主體、應用名稱、應用ID、應用包名、場景説明(具體描述該應用對應通訊錄量級等使用的必要信息)。

企業聯繫人信息來去電頁面顯示能力申請成功後,需要重新申請調試Profile,在新申請Profile勾選對應權限,並且在DevEco Studio中替換新申請的調試Profile。

開發自定義CallerInfoQueryExtensionAbility

在工程內創建一個ExtensionAbility類型的自定義組件並繼承CallerInfoQueryExtensionAbility,完成onQueryCallerInfo方法的複寫,示例代碼如下:

import { CallerInfoQueryExtensionAbility, CallerInfo } from '@kit.CallServiceKit';  
  
export default class MainCallerInfoQueryExtAbility extends CallerInfoQueryExtensionAbility {  
  // 來去電時由系統通話應用主動調用該接口查詢企業聯繫人信息  
  onQueryCallerInfo(phoneNumber: string): Promise<CallerInfo> {  
    //通過手機號請求用户信息  
    return httpPost<CallerInfo>({  
      url:  'https://wodekouwei.com/userInfoByPhone',  
      params: {  
        'phoneNumber': phoneNumber  
      } as Record<string, headerValueType>  
    })  
  }  
}

接着在應用配置文件module.json5中註冊extensionAbilities,

{
    "extensionAbilities": [
      {
        "name": "MainCallerInfoQueryExtAbility",
        "srcEntry": "./ets/callerinfoquery/MainCallerInfoQueryExtAbility.ets",//表示該Ability對應代碼路徑
        "type": "callerInfoQuery" //type標籤必須設為"callerInfoQuery",表示該拓展類型為CallerInfoQueryExtensionAbility。
      }
    ]
}
打開手機設置

接着在調試設備上,前往“電話”,點擊右上角的“更多”圖標,前往“設置”>“陌生號碼和信息識別”,打開對應企業應用的號碼識別功能開關,進行調試:
image.png
image.png
image.png

注意事項

一方面,來去電頁面或橫幅僅展示一個聯繫人信息,對於多個應用裏存在相同聯繫人的情況,按照應用包名的字典序排序,展示首個查詢結果。
另一方面,關於用户信息存儲問題,上述示例採用了網絡接口查詢方式,網絡正常情況下2秒可以正常返回,官方示例給了RDB數據庫查詢方式,通過本地數據庫查詢就要求必須把所有用户信息都內置在應用中,這樣不僅有安全問題而且如果企業規模較大員工較多時也是加重本地存儲壓力。一般採用接口請求方式,接口要做一些頻次等限制也要保證響應速度。
RDB數據庫場景需轉化context類型 const context = (this.context as common.ExtensionContext).getApplicationContext();
轉換後使用content獲取RdbStore實例:let store = await relationalStore.getRdbStore(context, null);

總結

HarmonyOS 5.0.2及以上版本推出的CallerInfoQueryExtensionAbility,為企業場景提供了高效實用的來電識別解決方案——通過輕量級獨立進程機制,在來去電時快速查詢並展示聯繫人姓名、部門、職位等企業信息,精準解決了2B業務中內部溝通的身份識別痛點。該能力接入流程簡潔清晰,僅需完成權限申請、擴展Ability開發與配置、手機功能開關開啓三步即可落地,同時支持網絡接口查詢與本地數據庫查詢兩種方式,結合多應用排序規則與響應速度優化建議(優先推薦接口查詢),既保障了安全性與體驗流暢度,又降低了企業落地成本。對於有內部通訊錄管理需求的企業應用而言,這一系統級能力無需額外硬件支持,即可顯著提升溝通效率,是鴻蒙生態在企業服務領域的又一實用創新。

參考

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.