Agora iOS SDK-快速入門(mén)

最近有一款應(yīng)用很火,叫Housparty,Housparty是一款視頻群聊應(yīng)用,最近它在A(yíng)pp Store上的下載排名已經(jīng)超過(guò)了Facebook。同時(shí),有媒體稱(chēng)Houseparty已經(jīng)完成了最新一輪的投資。自己就想著模仿一個(gè)玩玩,研究了下,發(fā)現(xiàn)有個(gè)叫Agora的可以實(shí)現(xiàn)部分的功能,就想試用下。
聲網(wǎng)Agora.io是一家提供穩(wěn)定,高可用,有質(zhì)量保障的實(shí)時(shí)視頻通話(huà)和實(shí)時(shí)全互動(dòng)直播技術(shù)服務(wù)的平臺(tái),支持全平臺(tái),只需要簡(jiǎn)單集成SKD,即可讓?xiě)?yīng)用實(shí)現(xiàn)高清視頻通話(huà),和多主播實(shí)時(shí)全互動(dòng)直播。
既然已經(jīng)有了SDK,就不需要自己寫(xiě)視頻以及通信部分的代碼了,這樣寫(xiě)一個(gè)Housparty的demo就更簡(jiǎn)單了,下面以iOS平臺(tái)為例,看下如何集成Agora SDK。

環(huán)境準(zhǔn)備

本文使用的環(huán)境如下:

先要注冊(cè)agora.io,注冊(cè)完成之后再新建一個(gè)項(xiàng)目,需要拿到對(duì)應(yīng)的App ID。后面的示例代碼需要使用該App ID。
最新的Agora SDK中有兩個(gè)文件夾:

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

需要的環(huán)境準(zhǔn)備好之后,新建一個(gè)agora項(xiàng)目,就可以開(kāi)始配置和集成Agora SDK

添加SDK

先把Agora SDK中./libs復(fù)制到agora項(xiàng)目中的agora目錄下。再把Agora SDK添加到項(xiàng)目的Libraries中。
添加Libraries的方法:

  1. 選中當(dāng)前Target(agora)
  2. Build Phases
  3. Link Binary With Libraries
  4. 點(diǎn)擊+

Link Binary

這個(gè)時(shí)候出現(xiàn)的界面是添加系統(tǒng)類(lèi)庫(kù)的,選擇Add Other ...從項(xiàng)目目錄中選中./libs添加里面的內(nèi)容到Libraries中。這樣就添加了Agora SDK。
在添加Agora SDK之后,還需要添加Agora SDK所依賴(lài)的庫(kù),參考官網(wǎng)上面demo使用的libraries,添加以下類(lèi)庫(kù):

  • CoreTelephony.framework
  • CoreMedia.framework
  • VideoToolbox.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • libc++.tbd

build的時(shí)候出現(xiàn)錯(cuò)誤:

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)

運(yùn)行官網(wǎng)的demo也出現(xiàn)了同樣的錯(cuò)誤,說(shuō)明類(lèi)庫(kù)沒(méi)有導(dǎo)入完整,還需要導(dǎo)入類(lèi)庫(kù)是libresolv.9.tbd
類(lèi)庫(kù)依賴(lài)問(wèn)題比較容易出現(xiàn),另一方面也說(shuō)明沒(méi)有支持Pod的麻煩,建議Agora能盡快支持CocoaPods。
再次build又出現(xiàn)了個(gè)問(wèn)題:

ld: library not found for -lcrypto

問(wèn)題的原因是:編譯時(shí)找不到需要的鏈接庫(kù)導(dǎo)致的,解決方法:

  1. 選中當(dāng)前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. 選中當(dāng)前Target(agora)
  2. Build Settings
  3. Build Options
  4. Enable Bitcode ->No
bitcode

這樣就配置完成了Agora SDK的支持,下面就可以開(kāi)始使用Agora SDK了。

訪(fǎng)問(wèn)OC類(lèi)庫(kù)

Agora SDK使用的是Object-c開(kāi)發(fā)的,而我們的項(xiàng)目使用的是Swift開(kāi)發(fā)的,因此就需要在Swift中訪(fǎng)問(wèn)OC的類(lèi)庫(kù),新建一個(gè)文件命名為agora-Bridging-Header.h,在該文件中引入Agora SDK:

#import <AgoraRtcEngineKit/AgoraRtcEngineKit.h>
#import <AgoraRtcCryptoLoader/AgoraRtcCryptoLoader.h>

然后把該文件設(shè)置為Objective-C Bridging Header,設(shè)置方法:

  1. 選中當(dāng)前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了。
在開(kāi)始調(diào)用Agora SDK之前還要知道,Agora SDK實(shí)現(xiàn)的是一套高清視頻通話(huà)或直播系統(tǒng),除了完成集成Agora SDK的工作之外,還需要給項(xiàng)目對(duì)應(yīng)的訪(fǎng)問(wèn)權(quán)限。

權(quán)限

需要給項(xiàng)目?jī)蓚€(gè)權(quán)限才能使用Agora SDK,這兩個(gè)權(quán)限是:

  • 相機(jī)
  • 麥克風(fēng)

info.plist添加這兩個(gè)權(quán)限:

info.plist

具體設(shè)置的內(nèi)容為:

  • Privacy - Camera Usage Description設(shè)置為:use camera to start video call
  • Privacy - Microphone Usage Description設(shè)置為use microphone to start video call

這樣完成了Agora SDK的項(xiàng)目配置,后面將繼續(xù)寫(xiě)如何使用Agora SDK,包含的功能:

  1. 創(chuàng)建room
  2. 分屏,2分屏、4分屏、6分屏
  3. 窗口切換
  4. 前后攝像頭切換

項(xiàng)目地址:https://github.com/jjz/agora-swift

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS[https://github...
    香橙柚子閱讀 9,140評(píng)論 0 36
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,021評(píng)論 4 61
  • 一直有寫(xiě)作的想法,然而拿起筆來(lái)思緒又是混亂的,什么都想寫(xiě)什么都寫(xiě)不出來(lái)。我想我的問(wèn)題也是很多人的問(wèn)題,然而因此放棄...
    哈奔奔閱讀 242評(píng)論 0 0
  • 姐,我發(fā)現(xiàn)你的肩膀肌肉有點(diǎn)緊,而且大椎這里有個(gè)大肉包,是不是平時(shí)會(huì)有酸痛脖子僵硬的感覺(jué)呀?你可不要小看肩頸問(wèn)題呀,...
    歐甜汐閱讀 3,635評(píng)論 0 3
  • 不曾言語(yǔ)的時(shí)候別懷疑是不是我 盡管只是一條小溪趟過(guò)也會(huì)濕了褲管 追逐本身就是一場(chǎng)夢(mèng) 得到對(duì)比失去哪有公平可言
    張釗z閱讀 257評(píng)論 0 0

友情鏈接更多精彩內(nèi)容