97成人免费视频,97视频免费公开成人福利,免费视频99,99婷婷,国产伊人久久,亚洲视频欧美,国产精品福利久久

您當(dāng)前的位置是:  首頁(yè) > 新聞 > 文章精選 >
 首頁(yè) > 新聞 > 文章精選 >

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

2018-01-11 16:43:46   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


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




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

專題

时尚| 错那县| 兴化市| 宝应县| 广东省| 东乡族自治县| 萍乡市| 仙游县| 霍州市| 视频| 逊克县| 宝鸡市| 德惠市| 梅州市| 兴和县| 高淳县| 武夷山市| 桦川县| 淅川县| 全南县| 天等县| 金门县| 库车县| 莒南县| 徐汇区| 景洪市| 定南县| 克拉玛依市| 闻喜县| 甘德县| 阳城县| 璧山县| 宁明县| 东丰县| 陆良县| 岳阳市| 沾化县| 图木舒克市| 永胜县| 井冈山市| 黄龙县|