【音視頻】iOS CallKit 開發(fā)指南

簡介

CallKit?是融云音視頻通話功能的 UI 界面 SDK腮考。包含了單人忘巧、多人音視頻通話的界面的各種場景和功能饶米。您可以快速的集成?CallKit?來實現(xiàn)豐富的音視頻通話界面桨啃,并進行自己的 UI 定制開發(fā)。同時我們開源了?CallKit檬输,您可以根據(jù)您的需要去使用照瘾。

GitHub 項目:CallKit 開源代碼

開通方式

音視頻服務(wù)開通,請參考音視頻開通方式說明褪猛。

使用說明

由于底層引擎技術(shù)不同网杆,2.6.0 之后的音視頻 SDK 與 2.6.0 之前的 SDK 中的實時音視頻不能互通羹饰。

音視頻 SDK 為商用收費功能伊滋,之前的 SDK 中的實時音視頻為免費測試功能,如果您還想使用之前的實時音視頻队秩,可以使用 2.5.2 版本笑旺。

集成說明

1.導入 SDK

有兩種方式可以將 SDK 導入您的項目中:

通過?CocoaPods?管理依賴

手動導入 SDK 并管理依賴

2.使用 CocoaPods 導入 SDK

1、 Cocoapods 的安裝馍资、使用筒主,可以參考IM SDK - 下載與導入SDK文檔。

2鸟蟹、 使用 CocoaPods 導入融云 SDK

在您的工程根目錄下新建一個 Podfile 文件乌妙,在文件中輸入以下內(nèi)容。(在此以 2.8.0 版本為例建钥,其中 “MyApp” 為自己工程名)

target'MyApp'do? ??

? ? ?pod'RongCloudIM/IMLib','2.8.0'

? ? ?pod'RongCloudIM/IMKit','2.8.0'

? ? ?pod'RongCloudIM/CallLib','2.8.0'

? ? ?pod'RongCloudIM/CallKit','2.8.0'

end

然后在終端中運行以下命令:

? pod install

完成后藤韵,CocoaPods 會在您的工程根目錄下生成一個?.xcworkspace?文件。您需要通過此文件打開您的工程熊经,而不是之前的?.xcodeproj泽艘。

請務(wù)必保證使用的 RongCloudIM 所有模塊版本號一致欲险。?

關(guān)于融云 IM CocoaPods 功能模塊的介紹和使用說明,可以參考說明文檔匹涮。?

如果您使用的是2.8.0之前的SDK天试,請參考知識庫文檔

3.手動導入 SDK

1然低、 下載 SDK

您可以到融云官方網(wǎng)站下載 SDK喜每。

2、 融云?IM SDK?是?Call SDK?的基礎(chǔ)雳攘。使用?CallKit?或?CallLib灼卢,必須同時集成使用融云?IM SDK。 手動導入 IM SDK来农,可以參考?IM SDK - 下載與導入文檔鞋真。

SDK 文件說明:

? ? ? ? ? ? ? ? ?文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?注意事項

RongCallKit.framework ? ? ? ? ? ? CallKit的framework 庫 ? ? ?使用 CallKit 必須導入

RongCallLib.framework ? ? ? ? ? ?CallLib的framework 庫 ? ?使用 CallLib 與使用 CallKit 都必須導入

AgoraRtcEngineKit.framework ?通話引擎 ? ? ? ? ? ? ? ? ? ? 必須導入,否則通話功能將無法使用

3沃于、 手動集成了融云 SDK 之后涩咖,您需要在您的工程中導入 RongCallLib.framewrok、 RongCallKit.framewrok繁莹、AgoraRtcEngineKit.framework 以及系統(tǒng)庫 CoreMotion.framework檩互、VideoToolbox.framework、libresolv.tbd咨演。

4闸昨、 在 Xcode 項目 “Build Settings -> Other Linker Flags” 中,增加"-ObjC"薄风。

快速集成

使用融云通話之前饵较,必須先初始化 SDK 和連接服務(wù)器,詳細內(nèi)容可以參考?IMKit SDK 集成文檔遭赂。

1. 發(fā)起通話

使用 CallKit 可以通過兩種方式發(fā)起通話:

在聊天界面輸入擴展的加號內(nèi)循诉,點擊音頻通話/視頻通話按鈕直接發(fā)送通話。

這個功能在 SDK 中已經(jīng)默認實現(xiàn)了撇他,您不需要做什么額外的操作茄猫。

調(diào)用 RCCall 類中的以下方法發(fā)起通話。

發(fā)起單人通話

// RCCall Class/*!

發(fā)起單人通話

@param targetId? 對方的用戶ID

@param mediaType 使用的媒體類型

*/- (void)startSingleCall:(NSString*)targetId? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mediaType:(RCCallMediaType)mediaType;

選擇成員并發(fā)起多人通話

// RCCall Class/*!

選擇成員并發(fā)起多人通話

@param conversationType 會話類型

@param targetId? ? ? ? 會話目標ID

@param mediaType? ? ? ? 使用的媒體類型

@discussion 此方法會先彈出選擇成員界面困肩,選擇完成后再會發(fā)起通話划纽。目前支持的會話類型有討論組和群組。

@warning 如果您需要在群組中調(diào)用此接口發(fā)起多人會話锌畸,需要設(shè)置并實現(xiàn)groupMemberDataSource勇劣。

*/- (void)startMultiCall:(RCConversationType)conversationType? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?targetId:(NSString*)targetId? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mediaType:(RCCallMediaType)mediaType;

需要注意的是,如果您需要在群組中調(diào)用此接口發(fā)起多人會話蹋绽,需要設(shè)置并實現(xiàn)?groupMemberDataSource?芭毙。

SDK 在選擇群組成員的時候筋蓖,會調(diào)用?getAllMembersOfGroup:result:?接口獲取群成員列表并顯示。

直接發(fā)起多人通話

// RCCall Class/*!

直接發(fā)起多人通話

@param conversationType 會話類型

@param targetId? ? ? ? 會話目標ID

@param mediaType? ? ? ? 使用的媒體類型

@param userIdList? ? ? 邀請的用戶ID列表

@discussion 此方法會直接發(fā)起通話退敦。目前支持的會話類型有討論組和群組粘咖。

@warning 您需要設(shè)置并實現(xiàn)groupMemberDataSource才能加人。

*/- (void)startMultiCallViewController:(RCConversationType)conversationType ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?targetId:(NSString*)targetId ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?mediaType:(RCCallMediaType)mediaType? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? userIdList:(NSArray*)userIdList;

2. 通話接聽

當收到一個通話呼叫的時候侈百,

當 App 處于前臺狀態(tài)的時候瓮下,SDK 會自動彈出通話界面。

當 App 處于后臺活動狀態(tài)的時候钝域,SDK 會彈出本地通知并播放鈴聲讽坏。

當 App 處于后臺暫停狀態(tài)的時候,如果您的 App 開啟了實時音視頻后臺運行模式并在開發(fā)者后臺上傳了 VoIP 推送證書例证,這時候 App 會在后臺啟動并彈出本地通知路呜;否則,App 會收到遠程推送提醒织咧,VoIP Push 設(shè)置請參考?VoIP 推送設(shè)置文檔胀葱。

關(guān)于 App 運行狀態(tài)的更多信息,您可以參考?SDK 的運行狀態(tài)文檔笙蒙。

3. 會話是否支持發(fā)起通話

目前抵屿,SDK 支持在單聊發(fā)起單人通話,在討論組捅位、群聊中發(fā)起多人通話轧葛。

您可以通過 RCCall 類的以下接口查詢當前會話的通話能力。

// RCCall Class/*!

當前會話類型是否支持音頻通話

@param conversationType 會話類型

@return 是否支持音頻通話

*/- (BOOL)isAudioCallEnabled:(RCConversationType)conversationType;/*!

當前會話類型是否支持視頻通話

@param conversationType 會話類型

@return 是否支持視頻通話

*/- (BOOL)isVideoCallEnabled:(RCConversationType)conversationType;

4. 設(shè)置多人最大通話人數(shù)限制

CallKit?默認音頻通話最大人數(shù)為 20 人艇搀,視頻通話最大人數(shù)為 9 人尿扯。

如果不符合您的需求,您可以通過?RCCall?以下接口設(shè)置最大人數(shù)中符。

// RCCall Class/*!

音頻通話支持的最大通話人數(shù)

*/@property(nonatomic,assign)intmaxMultiAudioCallUserNumber;/*!

視頻通話支持的最大通話人數(shù)

*/@property(nonatomic,assign)intmaxMultiVideoCallUserNumber;

建議您在設(shè)置最大人數(shù)的時候姜胖,考慮移動設(shè)備的帶寬(主要是多路視頻通話)和UI交互友好。

CallLib?的話音頻和視頻人數(shù)默認均沒有限制淀散。

5. UI 界面說明

CallKit?中默認實現(xiàn)了一套較為通用的通話 UI,包含單人音視頻通話界面?RCCallSingleCallViewController?蚜锨、多人音頻通話界面RCCallAudioMultiCallViewController?档插、多人視頻通話界面?RCCallVideoMultiCallViewController、最小化的通話界面?RCCallFloatingBoard亚再、聊天界面的通話提示?RCCallDetailMessageCell郭膛、RCCallTipMessageCell等。

如果能滿足您的需求氛悬,您可以基于?CallKit?直接開發(fā)则剃,如果您的需求較為特殊耘柱,可以直接使用?CallLib?并實現(xiàn)相關(guān)的界面UI,您也可以向我們商務(wù)索取CallKit?源碼以供參考棍现。

實時音視頻推送設(shè)置

詳細請參考?VoIP 推送設(shè)置文檔调煎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市己肮,隨后出現(xiàn)的幾起案子士袄,更是在濱河造成了極大的恐慌,老刑警劉巖谎僻,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娄柳,死亡現(xiàn)場離奇詭異,居然都是意外死亡艘绍,警方通過查閱死者的電腦和手機赤拒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诱鞠,“玉大人需了,你說我怎么就攤上這事“慵祝” “怎么了肋乍?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敷存。 經(jīng)常有香客問我墓造,道長,這世上最難降的妖魔是什么锚烦? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任觅闽,我火速辦了婚禮,結(jié)果婚禮上涮俄,老公的妹妹穿的比我還像新娘蛉拙。我一直安慰自己,他們只是感情好彻亲,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布孕锄。 她就那樣靜靜地躺著,像睡著了一般苞尝。 火紅的嫁衣襯著肌膚如雪畸肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天宙址,我揣著相機與錄音轴脐,去河邊找鬼。 笑死,一個胖子當著我的面吹牛大咱,可吹牛的內(nèi)容都是我干的恬涧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碴巾,長吁一口氣:“原來是場噩夢啊……” “哼溯捆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起餐抢,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤现使,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旷痕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碳锈,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年欺抗,在試婚紗的時候發(fā)現(xiàn)自己被綠了售碳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡绞呈,死狀恐怖贸人,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佃声,我是刑警寧澤艺智,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站圾亏,受9級特大地震影響十拣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜志鹃,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一夭问、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧曹铃,春花似錦加叁、人聲如沸颤霎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淳玩,卻和暖如春直撤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜕着。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人承匣。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓蓖乘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親韧骗。 傳聞我的和親對象是個殘疾皇子嘉抒,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容