本文僅用于記錄使用PJSIP開發(fā)VoIP灰瞻,會陸續(xù)
更新...
開發(fā)工具:Xcode9.2
開發(fā)語言:swift 4.0
1.編譯
編譯的資料有很多陶舞,官網(wǎng)也寫的很詳細虱朵,如果不想看英文蛮穿,這里推薦一篇pjsip for iOS:編譯多平臺支持的靜態(tài)庫余境,合并靜態(tài)庫的腳本有點問題驻呐,這里提供一個合并靜態(tài)庫的命令行例子,可以自己在終端用命令進行合并
lipo -create -arch armv7 libpjnath-armv7-apple-darwin_ios.a -arch arm64 libpjnath-arm64-apple-darwin_ios.a -arch armv7s libpjnath-armv7s-apple-darwin_ios.a -arch i386 libpjnath-i386-apple-darwin_ios.a -output libpjnath-apple-darwin_ios.a
坑:
我裝了兩個Xcode(一個命名Xcode8芳来,一個命名Xcode9)含末,使用lipo命令的時候把主要的一個Xcode在finder中命名為Xcode才成功了
當(dāng)然靜態(tài)庫都都可以不用自己編譯了(如果對開發(fā)功能有特殊需求還是自己編譯比較好,需要什么就配置什么)绣张,網(wǎng)上有很多答渔,也可以用cocoapods導(dǎo)入,gitHub項目地址,但我在開發(fā)過程中用cocoapods導(dǎo)入后侥涵,在撥打電話的時候遇到一個問題:提示我....Temporary failure in sending Request msg INVITE/cseq=22074 (tdta0x1028af000), will try next server: Unsupported transport (PJSIP_EUNSUPTRANSPORT)
,開發(fā)時間緊迫沼撕,最后放棄,改用編譯好的庫芜飘,這里提供一個我現(xiàn)在使用的庫务豺,下載地址gitHub(需要自己配置ipv6,若不配置嗦明,在ipv6情況下是會崩潰的笼沥,審核時有時候可能是ipv6環(huán)境)。
2.集成
將下載的文件拖入工程娶牌,我這里新建了一個PJSIP的文件夾奔浅,將Include和lib放入文件夾再拖到工程,我的目錄結(jié)構(gòu)如下圖
然后參考pjsip for iOS:實現(xiàn)一個簡單的語音通話APP一步步來
2.1.設(shè)置Build Settings
1.把ENABLE_BITCODE設(shè)置為NO
2.在Header Search Path 中添加路徑
$(PROJECT_DIR)/TestPJSIP/PJSIP/includes/pjlib
$(PROJECT_DIR)/TestPJSIP/PJSIP/includes/pjlib-util
$(PROJECT_DIR)/TestPJSIP/PJSIP/includes/pjmedia
$(PROJECT_DIR)/TestPJSIP/PJSIP/includes/pjnath
$(PROJECT_DIR)/TestPJSIP/PJSIP/includes/pjsip
這個路徑需要按照自己的實際路徑來诗良,不要直接復(fù)制粘貼
3.Other Linker Flags中添加-ObjC
4.Preprocessor Macros中添加PJ_AUTOCONF=1
2.2設(shè)置Build Phases
在Build Phases
中的 Link Binary With Libraries
中添加下面兩個 Framework :
- AudioToolbox
- AVFoundation
2.3創(chuàng)建Header
因為使用的是swift開發(fā)汹桦,而庫文件是OC的,所以需要建立橋接文件鉴裹,如何建立橋接文件請參考iOS第三方庫的使用方法以及常用的第三方庫,建好之后在橋接文件中添加如下代碼:
#import "pjsip.h"
#import "pjsua.h"
現(xiàn)在集成就成功了舞骆,command + B編譯一下钥弯,不出意外是沒問題了。那么今天就寫到這里了督禽,晚上有時間再更新swift版PJSIP的使用