系列教程:
- [教程] 使用 Agora SDK 實現視訊對話應用 HouseParty
- [教程] 實現視訊對話應用 HouseParty教程(二)—— 開始聊天
- [教程] 實現視訊對話應用 HouseParty教程(三)—— 多人聊天
最近有一款應用很火,叫Housparty
,Housparty是一款視訊群聊應用,最近它在App Store上的下載排名已經超過了Facebook。同時,有媒體稱Houseparty已經完成了最新一輪的投資。自己就想著模仿一個玩玩,研究了下,發現有個叫Agora
的可以實現部分的功能,就想試用下。聲網Agora.io
是一家提供穩定,高可用,有質量保障的實時視訊通話
和實時全互動直播技術
服務的平臺,支援全平臺,只需要簡單整合SKD,即可讓應用實現高清視訊通話,和多主播實時全互動直播。
既然已經有了SDK,就不需要自己寫視訊以及通訊部分的程式碼了,這樣寫一個Housparty
的demo就更簡單了,下面以iOS平臺為例,看下如何整合Agora SDK
。
環境準備
本文使用的環境如下:
- XCode 8.3.1
- 最小SDK iOS 9.3
- 真機
- Swift語言
- 最新Agora SDK
- 申請AppID
先要註冊agora.io
,註冊完成之後再新建一個專案,需要拿到對應的App ID
。後面的示例程式碼需要使用該App ID
。
最新的Agora SDK
中有兩個資料夾:
- ./libs 中含有的是所需的庫(整合到App需要的)
- ./samples 包含Open Video Call 和 Open Live的程式碼示例
需要的環境準備好之後,新建一個agora
專案,就可以開始配置和整合Agora SDK
。
新增SDK
先把Agora SDK中./libs
複製到agora專案中的agora目錄下。再把Agora SDK新增到專案的Libraries
中。
新增Libraries
的方法:
- 選中當前Target(agora)
- Build Phases
- Link Binary With Libraries
- 點選+
這個時候出現的介面是新增系統類庫的,選擇Add Other ...
從專案目錄中選中./libs
新增里面的內容到Libraries
中。這樣就新增了Agora SDK
。
在新增Agora SDK
之後,還需要新增Agora SDK
所依賴的庫,參考官網上面demo使用的libraries
,新增以下類庫:
- CoreTelephony.framework
- CoreMedia.framework
- VideoToolbox.framework
- AudioToolbox.framework
- AVFoundation.framework
- libc++.tbd
build
的時候出現錯誤:
Showing All Messages
"_res_9_getservers", referenced from:
agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
"_res_9_ninit", referenced from:
agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
"_res_9_ndestroy", referenced from:
agora::commons::network::get_dns_list(bool) in AgoraRtcEngineKit(libmediasdk.a-arm64-master.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)複製程式碼
執行官網的demo也出現了同樣的錯誤,說明類庫沒有匯入完整,還需要匯入類庫是libresolv.9.tbd
。
類庫依賴問題比較容易出現,另一方面也說明沒有支援Pod
的麻煩,建議Agora
能儘快支援CocoaPods
。
再次build
又出現了個問題:
ld: library not found for -lcrypto複製程式碼
問題的原因是:編譯時找不到需要的連結庫導致的,解決方法:
- 選中當前Target(agora)
- Build Settings
- Search Paths
- Library Search Paths
- 新增
"${PROJECT_DIR}/agora/libs"
另外Agora SDK
並不支援bitcode,因此需要把bitcode禁止掉,禁止bitcode的方法:
- 選中當前Target(agora)
- Build Settings
- Build Options
- Enable Bitcode ->No
這樣就配置完成了Agora SDK
的支援,下面就可以開始使用Agora SDK
了。
訪問OC類庫
Agora SDK
使用的是Object-c
開發的,而我們的專案使用的是Swift
開發的,因此就需要在Swift
中訪問OC的類庫
,新建一個檔案命名為agora-Bridging-Header.h
,在該檔案中引入Agora SDK
:
#import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>
#import <AgoraRtcCryptoLoader/AgoraRtcCryptoLoader.h>複製程式碼
然後把該檔案設定為Objective-C Bridging Header
,設定方法:
- 選中當前Target(agora)
- Build Settings
- Swift Compiler-General
- Objective-C Bridging Header
- agora/agora-Bridging-Header.h
這樣能在Swift
中使用Agora SDK
了。
在開始呼叫Agora SDK
之前還要知道,Agora SDK
實現的是一套高清視訊通話或直播系統,除了完成整合Agora SDK
的工作之外,還需要給專案對應的訪問許可權。
許可權
需要給專案兩個許可權才能使用Agora SDK
,這兩個許可權是:
- 相機
- 麥克風
在info.plist
新增這兩個許可權:
具體設定的內容為:
Privacy - Camera Usage Description
設定為:use camera to start video call
Privacy - Microphone Usage Description
設定為use microphone to start video call
這樣完成了Agora SDK
的專案配置,後面將繼續寫如何使用Agora SDK
,包含的功能:
- 建立room
- 分屏,2分屏、4分屏、6分屏
- 視窗切換
- 前後攝像頭切換