[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼

姜家志發表於2019-02-25

系列教程:

  1. [教程] 使用 Agora SDK 實現視訊對話應用 HouseParty
  2. [教程] 實現視訊對話應用 HouseParty教程(二)—— 開始聊天
  3. [教程] 實現視訊對話應用 HouseParty教程(三)—— 多人聊天

最近有一款應用很火,叫Housparty,Housparty是一款視訊群聊應用,最近它在App Store上的下載排名已經超過了Facebook。同時,有媒體稱Houseparty已經完成了最新一輪的投資。自己就想著模仿一個玩玩,研究了下,發現有個叫Agora的可以實現部分的功能,就想試用下。
聲網Agora.io是一家提供穩定,高可用,有質量保障的實時視訊通話和實時全互動直播技術服務的平臺,支援全平臺,只需要簡單整合SKD,即可讓應用實現高清視訊通話,和多主播實時全互動直播。
既然已經有了SDK,就不需要自己寫視訊以及通訊部分的程式碼了,這樣寫一個Housparty的demo就更簡單了,下面以iOS平臺為例,看下如何整合Agora SDK

環境準備

本文使用的環境如下:

先要註冊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的方法:

  1. 選中當前Target(agora)
  2. Build Phases
  3. Link Binary With Libraries
  4. 點選+

[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼
Link Binary

這個時候出現的介面是新增系統類庫的,選擇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複製程式碼

問題的原因是:編譯時找不到需要的連結庫導致的,解決方法:

  1. 選中當前Target(agora)
  2. Build Settings
  3. Search Paths
  4. Library Search Paths
  5. 新增"${PROJECT_DIR}/agora/libs"

[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼
Library Search Paths

另外Agora SDK並不支援bitcode,因此需要把bitcode禁止掉,禁止bitcode的方法:

  1. 選中當前Target(agora)
  2. Build Settings
  3. Build Options
  4. Enable Bitcode ->No

[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼
bitcode

這樣就配置完成了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,設定方法:

  1. 選中當前Target(agora)
  2. Build Settings
  3. Swift Compiler-General
  4. Objective-C Bridging Header
  5. agora/agora-Bridging-Header.h

[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼
oc bridging

這樣能在Swift中使用Agora SDK了。
在開始呼叫Agora SDK之前還要知道,Agora SDK實現的是一套高清視訊通話或直播系統,除了完成整合Agora SDK的工作之外,還需要給專案對應的訪問許可權。

許可權

需要給專案兩個許可權才能使用Agora SDK,這兩個許可權是:

  • 相機
  • 麥克風

info.plist新增這兩個許可權:

[教程] 使用 Agora SDK 實現視訊對話應用 HouseParty – 附 iOS 原始碼
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,包含的功能:

  1. 建立room
  2. 分屏,2分屏、4分屏、6分屏
  3. 視窗切換
  4. 前後攝像頭切換

專案地址:github.com/jjz/agora-s…

相關文章