構(gòu)建 WebRTC for IOS AppRTCMobile 項(xiàng)目
簡(jiǎn)介
在之前的幾篇文章中,我們已經(jīng)學(xué)習(xí)了如何在 Web、Windows 和 Android 平臺(tái)上封裝和建立一個(gè) P2P 和 P2PS 音視頻通話(huà)項(xiàng)目。然而,我們還沒(méi)有討論在 Linux 和 iOS 平臺(tái)上如何操作。因此,這篇文章將首先介紹如何在 iOS 平臺(tái)上構(gòu)建 WebRTC AppRTCMobile 項(xiàng)目。在后續(xù)的文章中,我們將繼續(xù)探討 Linux 平臺(tái)的實(shí)現(xiàn)。
這是 Android 與 IOS 基于 webrtc:m98 構(gòu)建的通話(huà)效果:
如何還想了解 Web 、Windows 、Android WebRTC 開(kāi)發(fā),可以移步如下文章
WebRTC 系列文章
環(huán)境搭建
由于我們主要搭建官方的 AppRTCMobile 項(xiàng)目,所以就用不到之前開(kāi)發(fā)的信令服務(wù)器,那么就只能用官方提供的 AppRTC 做為信令服務(wù)器了。
部署 AppRTC 信令服務(wù)器
我們可以使用 docker 來(lái)進(jìn)行搭建
#https://hub.docker.com/r/piasy/apprtc-server/
docker run --rm --net=host \
-e PUBLIC_IP=<server public IP> \
-it piasy/apprtc-server
示例:
docker run --rm --net=host -e PUBLIC_IP=192.144.201.2 -it piasy/apprtc-server
檢查是否運(yùn)行起來(lái)
lsof -i 8080
WebRTC for IOS 編譯
-
clone webrtc
git clone [email protected]:yangkun19921001/OpenRTCClient.git
git checkout develop
#配置 OpenRTCClient/build_system 環(huán)境變量
cd OpenRTCClient/webrtc
webrtc_build gen ios arm64 debug ../build_system/build_options_set/default out
webrtc_build build ios arm64 debug ../build_system/build_options_set/default out
在編譯的過(guò)程中,如果出現(xiàn)如下錯(cuò)誤:
1.1 ../../../../../webrtc/third_party/ffmpeg/libavutil/macros.h:28:10: fatal error: 'libavutil/avconfig.h
找到 out/ios/arm64/debug/args.gn ,將 rtc_use_h264 = false 改為 false
1.2 安裝失敗
ios 安裝沒(méi)有 android 那么方便,它對(duì)安裝的應(yīng)用安全性較高,所以我們要進(jìn)行編譯打開(kāi)簽名的配置
ios_enable_code_signing = true
1.3 Bundle Identifier & info.list 修改保持一致
1.4 Xcode 14 - Cannot code sign because the target does not have an Info.plist file
Select Build Settings --> Packaging --> Generate info.plist File = info.plist 絕對(duì)路徑
運(yùn)行 AppRTCMobile
編譯完成后,找到下圖的文件然后雙擊打開(kāi)
打開(kāi)后是這樣的
進(jìn)行簽名配置:
配置 info.plist 路徑
還有一個(gè)問(wèn)題,由于我當(dāng)前 IOS 版本是 16.5.1 ,然后 XCode 報(bào)不支持該設(shè)備
解決辦法是升級(jí) OS 和 XCode 版本,升級(jí)后的版本為:
然后,最后一步還需要再 IPhone -> 設(shè)置 -> 通用 -> VPN 與設(shè)備管理中找到我們剛剛運(yùn)行的 app, 然后點(diǎn)擊信任。
到這里,就能編譯成功并運(yùn)行起來(lái)了。
總結(jié)
今天算是搞了一天,最后終于是運(yùn)行起來(lái)并達(dá)到了預(yù)期。
后續(xù)我們將繼續(xù)分享 webrtc 相關(guān)的知識(shí),下期再會(huì)!
