[教程] 使用 Agora SDK 實現視頻對話應用 HouseParty - 附 iOS 源碼

系列教程:javascript

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

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

環境準備

本文使用的環境以下:c++

先要註冊agora.io,註冊完成以後再新建一個項目,須要拿到對應的App ID。後面的示例代碼須要使用該App ID
最新的Agora SDK中有兩個文件夾:git

  • ./libs 中含有的是所需的庫(集成到App須要的)
  • ./samples 包含Open Video Call 和 Open Live的代碼示例

須要的環境準備好以後,新建一個agora項目,就能夠開始配置和集成Agora SDKgithub

添加SDK

先把Agora SDK中./libs複製到agora項目中的agora目錄下。再把Agora SDK添加到項目的Libraries中。
添加Libraries的方法:swift

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

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的時候出現錯誤:ide

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又出現了個問題:post

ld: library not found for -lcrypto複製代碼

問題的緣由是:編譯時找不到須要的連接庫致使的,解決方法:ui

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

Library Search Paths

另外 Agora SDK並不支持 bitcode,所以須要把bitcode禁止掉,禁止bitcode的方法:

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

bitcode

這樣就配置完成了Agora SDK的支持,下面就能夠開始使用Agora SDK了。spa

訪問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

oc bridging

這樣能在 Swift中使用 Agora SDK了。
在開始調用 Agora SDK以前還要知道, Agora SDK實現的是一套高清視頻通話或直播系統,除了完成集成 Agora SDK的工做以外,還須要給項目對應的訪問權限。

權限

須要給項目兩個權限才能使用Agora SDK,這兩個權限是:

  • 相機
  • 麥克風

info.plist添加這兩個權限:

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…

相關文章
相關標籤/搜索