中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

您當前的位置是:  首頁 > 新聞 > 文章精選 >
 首頁 > 新聞 > 文章精選 >

PushKit和CallKit實現(xiàn)——基于實時語音通話

2018-01-11 16:43:46   作者:   來源:CTI論壇   評論:0  點擊:17154


  蘋果在2016年的WWDC大會上推出了iOS10,提供了一系列更加開放的新特性,其中CallKit對實時語音通話業(yè)務最實用,這個框架能夠讓第三方應用獲得系統(tǒng)電話的權限以及體驗。容聯(lián)快聊基于PushKit和CallKit提供給用戶更好的體驗:




  小伙伴,接下來跟著我一起開始實時通話集成吧
  一、PushKit介紹
  PushKit從iOS 8版本開始支持,具體實現(xiàn)如下:
  1. app需要開啟推送,且后臺模式勾選Voice over IP;
  2. 創(chuàng)建PushKit推送證書,證書創(chuàng)建類型選擇VoIP Services Certificate,具體生成過程不再贅述與普通推送證書過程一樣;
  3. 引用PushKit.framework庫;
  4. 注冊PushKit推送通知,代碼如下:
代理函數(shù)的實現(xiàn):
  PushKit與原來遠程推送的區(qū)別:
  原來遠程推送是由服務器發(fā)出消息之后,iPhone設備收到消息,由iOS 系統(tǒng)彈出通知窗口。
  PushKit是由服務器發(fā)出消息之后,iPhone設備收到消息后,會在后臺啟動app(在設備上看不到,即使雙擊Home也看不到),消息會送達到回調(diào)函數(shù)里,由應用決定怎么處理該消息,如彈出本地通知或做一些其他操作;后臺時間有限,不能做過于耗時操作。
  PushKit和原來遠程推送是共存的,所以在系統(tǒng)里需要兩個證書,也會有對應的push token生成;呼叫模塊會根據(jù)PushKit證書和對應的push token同時存在推送PushKit推送,否則還走原來的遠程推送邏輯。
  二、CallKit介紹:
  CallKit是從iOS 10開始支持,需要引用CallKit.framework庫。
  優(yōu)點:
  1. 提高網(wǎng)絡通話的音頻權限:避免在通話過程中被傳統(tǒng)電話無腦打斷,更順暢!
  2. 可以使用系統(tǒng)電話的UI界面:實時語音通話真正地變成了“電話”!
  簡單介紹:
  首先得介紹一下CallKit的框架。他分為三大模塊:通話管理,CallCenter和來電屏蔽,要實現(xiàn)上述功能我們只需要關注通話管理模塊。通話管理模塊里主要有兩個類:CXProvider和CXCallController。
  CXProvider可以理解為處理系統(tǒng)電話界面有關的邏輯,比如來電呼起系統(tǒng)電話界面或者將用戶在系統(tǒng)電話界面上的操作通知給App。 CXCallController則是將用戶在App界面上的操作通知給系統(tǒng)。
  CallKit來電場景的介紹:
  網(wǎng)絡通話適配CallKit主要包含三個流程:收到來電主動通知CallKit、用戶在CallKit界面點擊接聽、用戶在App界面點擊掛斷。下面將通過三個流程來介紹CXProvider、CXCallController的使用。
  App收到來電
  收到SDK的onIncomingCallReceived回調(diào)消息時,其他邏輯不變只需要調(diào)用CXProvider的reportNewIncomingCall就可以展示系統(tǒng)電話界面。
  用戶在CallKit界面點擊接聽,該流程可用于用戶對Callkit的所有操作回調(diào):
  用戶點擊接聽后,我們會受到CXAnswerCallAction的回調(diào),在這里面添加acceptCall接聽來電,再調(diào)用fulfill,整個流程就完成了。在前面判斷如果callid不存在字典中顯示失敗。
  用戶在App中掛斷電話
  這時候我們需要添加一個CXEndCallAction到CXTransaction并調(diào)用requestTransaction請求執(zhí)行:
  之后的流程與CallKit界面點擊接聽類似,收到CXEndCallAction回調(diào),執(zhí)行掛機邏輯,調(diào)用fulfill完成流程。所有用戶在app內(nèi)的操作都以這種方式通知CallKit:
  上面簡單介紹來電的場景,希望大家舉一反三,在App中補充其他的電話流程。
  三、系統(tǒng)適配問題:
  根據(jù)上面所講內(nèi)容,iOS 8和iOS 9是支持PushKit但不支持CallKit,如果這個時候收到PushKit的通知就需要應用來做本地推送,這樣會造成工作量的增加;所以在注冊PushKit的時候,判斷當前系統(tǒng)是否支持CallKit,支持CallKit再注冊PushKit推送,這樣服務器會判斷當前沒有PushKit的token會走原來的推送;當然如果PushKit有其他用途的就另當別論了。
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。
  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

專題