福利來了【乾貨】融雲音視頻開發 iOS CallKit 開發指南

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 SDK 是 Call SDK 的基礎。使用 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 以及系統庫 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 源碼以供參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章