1. 程式人生 > >技術福利【幹貨】音視頻 iOS CallKit 開發指南

技術福利【幹貨】音視頻 iOS CallKit 開發指南

音視頻 voip calllib開發指南 sdk

iOS CallKit 開發指南

簡介

CallKit 是融雲音視頻通話功能的 UI 界面 SDK。包含了單人、多人音視頻通話的界面的各種場景和功能。您可以快速的集成 CallKit 來實現豐富的音視頻通話界面,並進行自己的 UI 定制開發。同時我們開源了 CallKit,您可以根據您的需要去使用。

GitHub 項目:CallKit 開源代碼

使用說明

由於底層引擎技術不同,2.6.0 之後的音視頻 SDK 與 2.6.0 之前的 SDK 中的 VoIP 不能互通。

音視頻 SDK 為商用收費功能,之前的 SDK 中的 VoIP 為免費測試功能,如果您還想使用之前的 VoIP,可以使用 2.5.2 版本。

集成說明

導入 SDK

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

  • 通過 CocoaPods 管理依賴

  • 手動導入 SDK 並管理依賴

使用 CocoaPods 導入 SDK

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

2、 使用 CocoaPods 導入融雲 SDK

在您的工程根目錄下新建一個 Podfile 文件,在文件中輸入以下內容。(在此以 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

請務必保證使用的 RongCloudIM 所有模塊版本號一致。
關於融雲 IM CocoaPods 功能模塊的介紹和使用說明,可以參考說明文檔。
如果您使用的是2.8.0之前的SDK,請參考知識庫文檔。

手動導入 SDK

1、 下載 SDK

您可以到融雲官方網站下載 SDK。

2、 融雲 IM SDKCall SDK 的基礎。使用 CallKitCallLib,必須同時集成使用融雲 IM SDK

。 手動導入 IM SDK,可以參考 IM SDK - 下載與導入文檔。

SDK 文件說明:

文件說明註意事項
RongCallKit.frameworkCallKit的framework 庫使用 CallKit 必須導入
RongCallLib.frameworkCallLib的framework 庫使用 CallLib 與使用 CallKit 都必須導入
AgoraRtcEngineKit.framework通話引擎必須導入,否則通話功能將無法使用

3、 手動集成了融雲 SDK 之後,您需要在您的工程中導入 RongCallLib.framewrok、 RongCallKit.framewrok、AgoraRtcEngineKit.framework 以及系統庫 CoreMotion.framework、VideoToolbox.framework、libresolv.tbd。

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

快速集成

使用融雲通話之前,必須先初始化 SDK 和連接服務器,詳細內容可以參考 IMKit SDK 集成文檔。

發起通話

使用 CallKit 可以通過兩種方式發起通話:

  1. 在聊天界面輸入擴展的加號內,點擊語音通話/視頻通話按鈕直接發送通話。

這個功能在 SDK 中已經默認實現了,您不需要做什麽額外的操作。

  1. 調用 RCCall 類中的以下方法發起通話。

  2. 發起單人通話

// RCCall Class/*!
 發起單人通話

 @param targetId  對方的用戶ID
 @param mediaType 使用的媒體類型
 */- (void)startSingleCall:(NSString *)targetId
              mediaType:(RCCallMediaType)mediaType;
  • 選擇成員並發起多人通話

// RCCall Class/*!
 選擇成員並發起多人通話

 @param conversationType 會話類型
 @param targetId         會話目標ID
 @param mediaType        使用的媒體類型

 @discussion 此方法會先彈出選擇成員界面,選擇完成後再會發起通話。目前支持的會話類型有討論組和群組。

 @warning 如果您需要在群組中調用此接口發起多人會話,需要設置並實現groupMemberDataSource。
 */- (void)startMultiCall:(RCConversationType)conversationType
              targetId:(NSString *)targetId
             mediaType:(RCCallMediaType)mediaType;

需要註意的是,如果您需要在群組中調用此接口發起多人會話,需要設置並實現 groupMemberDataSource
SDK 在選擇群組成員的時候,會調用 getAllMembersOfGroup:result: 接口獲取群成員列表並顯示。

  • 直接發起多人通話

// RCCall Class/*!
 直接發起多人通話

 @param conversationType 會話類型
 @param targetId         會話目標ID
 @param mediaType        使用的媒體類型
 @param userIdList       邀請的用戶ID列表

 @discussion 此方法會直接發起通話。目前支持的會話類型有討論組和群組。

 @warning 您需要設置並實現groupMemberDataSource才能加人。
 */- (void)startMultiCallViewController:(RCConversationType)conversationType
                            targetId:(NSString *)targetId
                           mediaType:(RCCallMediaType)mediaType
                          userIdList:(NSArray *)userIdList;

通話接聽

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

  1. 當 App 處於前臺狀態的時候,SDK 會自動彈出通話界面。

  2. 當 App 處於後臺活動狀態的時候,SDK 會彈出本地通知並播放鈴聲。

  3. 當 App 處於後臺暫停狀態的時候,如果您的 App 開啟了 VoIP 後臺運行模式並在開發者後臺上傳了 VoIP 推送證書,這時候 App 會在後臺啟動並彈出本地通知;否則,App 會收到遠程推送提醒,VoIP Push 設置請參考 VoIP 推送設置文檔。

關於 App 運行狀態的更多信息,您可以參考 SDK 的運行狀態文檔。

會話是否支持發起通話

目前,SDK 支持在單聊發起單人通話,在討論組、群聊中發起多人通話。

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

// RCCall Class/*!
 當前會話類型是否支持音頻通話

 @param conversationType 會話類型

 @return 是否支持音頻通話
 */- (BOOL)isAudioCallEnabled:(RCConversationType)conversationType;/*!
 當前會話類型是否支持視頻通話

 @param conversationType 會話類型

 @return 是否支持視頻通話
 */- (BOOL)isVideoCallEnabled:(RCConversationType)conversationType;

設置多人最大通話人數限制

CallKit 默認音頻通話最大人數為 20 人,視頻通話最大人數為 9 人。

如果不符合您的需求,您可以通過 RCCall 以下接口設置最大人數。

// RCCall Class/*!
 音頻通話支持的最大通話人數
 */@property (nonatomic, assign) int maxMultiAudioCallUserNumber;/*!
 視頻通話支持的最大通話人數
 */@property (nonatomic, assign) int maxMultiVideoCallUserNumber;

建議您在設置最大人數的時候,考慮移動設備的帶寬(主要是多路視頻通話)和UI交互友好。
CallLib 的話音頻和視頻人數默認均沒有限制。

UI 界面說明

CallKit 中默認實現了一套較為通用的通話 UI,包含單人音視頻通話界面 RCCallSingleCallViewController 、多人音頻通話界面RCCallAudioMultiCallViewController 、多人視頻通話界面 RCCallVideoMultiCallViewController、最小化的通話界面 RCCallFloatingBoard、聊天界面的通話提示 RCCallDetailMessageCellRCCallTipMessageCell等。

如果能滿足您的需求,您可以基於 CallKit 直接開發,如果您的需求較為特殊,可以直接使用 CallLib 並實現相關的界面UI,您也可以向我們商務索取CallKit 源碼以供參考。


技術福利【幹貨】音視頻 iOS CallKit 開發指南