云信音視頻通話

云信平臺設置:

1搁骑、登錄云信平臺斧吐,開通信令和音視頻通話(試用)。

iShot_2023-04-11_16.54.06.png

2仲器、測試階段煤率,建議將鑒權方式設置成調試模式。
1)點進功能配置乏冀,修改鑒權方式蝶糯。
iShot_2023-04-12_16.37.21.png

2)選擇“調試模式”,無需NERTC Token驗證辆沦,可以幫助我們更快的集成rtc功能昼捍。
iShot_2023-04-12_16.37.57.png

3、語音呼叫時肢扯,會用到aps推送功能妒茬,因此平臺需要我們上傳推送證書。這里以上傳p12為例鹃彻,p12證書的產生郊闯,可以參考我的另一篇帖子:aps推送證書申請流程
1)點擊證書管理蛛株,上傳推送證書。
iShot_2023-04-12_16.43.13.png

2)點擊“添加證書”育拨,填寫各項內容谨履。已添加的證書,會在列表中顯示熬丧。
iShot_2023-04-12_16.46.11.png

iShot_2023-04-12_17.19.52.png

4笋粟、此外,我們還需要兩個測試賬號,進行音視頻通話害捕。
1)點擊“API調試”绿淋,通過API調試,創(chuàng)建兩個測試賬號尝盼。
iShot_2023-04-12_16.39.26.png

2)隨意輸入accid和token吞滞,創(chuàng)建成功會返回200,保存創(chuàng)建成功的accid和token備用盾沫。
iShot_2023-04-11_16.55.01.png

代碼集成:

1裁赠、編寫Podfile文件,因為筆者需要修改UI較多赴精,故使用本地依賴佩捞。您可以依照自己的需求設置。

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YXDemo2' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  #登錄組件
  pod 'YXLogin', '1.0.0'
  
  #可選UI庫
#  pod 'NEContactUIKit', '9.4.0'
#  pod 'NEConversationUIKit', '9.4.0'
#  pod 'NEChatUIKit', '9.4.0'
#  pod 'NETeamUIKit', '9.4.0'
  
  
  #可選Kit庫(和UIKit對應)
  pod 'NEContactKit', '9.4.0'
  pod 'NEConversationKit', '9.4.0'
  pod 'NEChatKit', '9.4.0'
  pod 'NETeamKit', '9.4.0'
  
  #基礎kit庫
  pod 'NECommonUIKit', '9.4.0'
  pod 'NECommonKit', '9.4.0'
  pod 'NECoreIMKit', '9.4.0'
  pod 'NECoreKit', '9.4.0'
  
  #擴展庫
#  pod 'NEMapKit', '9.4.0'
  
  #呼叫組件蕾哟,音視頻通話能力一忱,需要開通 音視頻2.0,可選谭确,聊天一面會根據依賴初始化自動顯示音視頻通話入口
#  pod 'NERtcCallUIKit', '1.8.2'
  pod 'NERtcCallKit', '1.8.2'
  pod 'NERtcSDK', '4.6.29'

  # 如果需要查看UI部分源碼請注釋掉以上在線依賴掀潮,打開下面的本地依賴
  pod 'NEContactUIKit', :path => 'NEContactUIKit/NEContactUIKit.podspec'
  pod 'NEConversationUIKit', :path => 'NEConversationUIKit/NEConversationUIKit.podspec'
  pod 'NETeamUIKit', :path => 'NETeamUIKit/NETeamUIKit.podspec'
  pod 'NEChatUIKit', :path => 'NEChatUIKit/NEChatUIKit.podspec'
  pod 'NEMapKit', :path => 'NEMapKit/NEMapKit.podspec'
  pod 'NERtcCallUIKit', :path => 'NERtcCallUIKit/NERtcCallUIKit.podspec'


end

#fix bug in Xcode 14
post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'RSKPlaceholderTextView'
      target.build_configurations.each do |config|
        config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
      end
    end
  end
end

#??如果pod依賴報錯,可打開以下注釋
#post_install do |installer|
#  installer.pods_project.targets.each do |target|
#    target.build_configurations.each do |config|
#      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
#    end
#  end
#end

2琼富、將官方demo里的UI源碼庫仪吧,拷貝到項目根目錄。

iShot_2023-04-11_17.10.55.png

3鞠眉、執(zhí)行pod update薯鼠,首次安裝可能需要多次install才能成功。
iShot_2023-04-11_17.12.02.png

4械蹋、進行初始化操作出皇。

@implementation AppDelegate
@synthesize window = _window;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    [[IMManager shared] initIM];
    
    ViewController *vc = [[ViewController alloc]init];
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];

    return YES;
}

    static let shared = IMManager()
    let account = "10086"
    let token = "a9efaa4d25ac531536bfba0a0bee54b5"

    func initIM() {
        
        // init
        let option = NIMSDKOption()
        option.appKey = "您的appKey"
        option.apnsCername = pushCerName
        IMKitClient.instance.setupCoreKitIM(option)
        
        relogin()

        //添加登錄狀態(tài)監(jiān)聽
        NIMSDK.shared().loginManager.add(self)
        //添加IM接受監(jiān)聽
        NIMSDK.shared().chatManager.add(self)

        NEKeyboardManager.shared.enable = true
        NEKeyboardManager.shared.shouldResignOnTouchOutside = true

        setupCall()
    }

    func relogin() {

        NIMSDK.shared().loginManager.login(account, token: token) { error in
            print("IM loginManager,登錄成功")
        }

    }

    //MARK: 呼叫
    func setupCall() {
        //呼叫組件初始化
        let option = NERtcCallOptions()
        option.apnsCerName = pushCerName
        option.isDisableLog = true
        let uiConfig = NERtcCallUIConfig()
        uiConfig.option = option
        uiConfig.appKey = kAppKey
        uiConfig.uiConfig.showCallingSwitchCallType = option.supportAutoJoinWhenCalled
        NERtcCallKit.sharedInstance().timeOutSeconds = 30
        NERtcCallUIKit.sharedInstance().setup(with: uiConfig)
    }

5哗戈、注冊推送郊艘,實現代理。

    func registerAPNS(){
        if #available(iOS 10.0, *) {
            let center = UNUserNotificationCenter.current()
            center.delegate = self
            
            center.requestAuthorization(options: [.badge, .sound, .alert]) { grant, error in
                if grant == false {
                    DispatchQueue.main.async {
                        UIApplication.shared.keyWindow?.makeToast(NSLocalizedString("open_push", comment: ""))
                    }
                }
            }
        } else {
            let setting = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil)
            UIApplication.shared.registerUserNotificationSettings(setting)
        }
        UIApplication.shared.registerForRemoteNotifications()
        UIApplication.shared.applicationIconBadgeNumber = 0
    }
    
    func applicationWillEnterForeground(_ application: UIApplication) {
        UIApplication.shared.applicationIconBadgeNumber = 0
    }
    
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        NIMSDK.shared().updateApnsToken(deviceToken)
    }
    
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        NELog.infoLog("app delegate : ", desc: error.localizedDescription)
    }

Xcode設置:

1唯咬、為項目添加推送能力纱注。


iShot_2023-04-13_10.36.43.png

2、配置攝像頭和麥克風隱私權限胆胰。

Privacy - Camera Usage Description
——需要您的同意狞贱,才能使用攝像頭,以便于相機拍攝蜀涨,上傳瞎嬉、發(fā)布照片
Privacy - Microphone Usage Description
——需要您的同意蝎毡,才能使用麥克風,以便于視頻錄制氧枣、語音識別沐兵、語音聊天
iShot_2023-04-14_10.39.17.png

3、填寫B(tài)undle ID便监,設置好證書扎谎,連接真機運行,跑通項目茬贵。
4簿透、在兩部手機上,分別使用上文創(chuàng)建好的兩個測試賬號運行解藻,跳到聊天頁面老充,就可以發(fā)起音視頻通話了。


401681353768_.pic.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末螟左,一起剝皮案震驚了整個濱河市啡浊,隨后出現的幾起案子,更是在濱河造成了極大的恐慌胶背,老刑警劉巖巷嚣,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異钳吟,居然都是意外死亡廷粒,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門红且,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝茎,“玉大人,你說我怎么就攤上這事暇番∴头牛” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵壁酬,是天一觀的道長次酌。 經常有香客問我,道長舆乔,這世上最難降的妖魔是什么岳服? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蜕煌,結果婚禮上派阱,老公的妹妹穿的比我還像新娘。我一直安慰自己斜纪,他們只是感情好贫母,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盒刚,像睡著了一般腺劣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上因块,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天橘原,我揣著相機與錄音,去河邊找鬼涡上。 笑死趾断,一個胖子當著我的面吹牛,可吹牛的內容都是我干的吩愧。 我是一名探鬼主播芋酌,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雁佳!你這毒婦竟也來了脐帝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤糖权,失蹤者是張志新(化名)和其女友劉穎堵腹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體星澳,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疚顷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了禁偎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腿堤。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖届垫,靈堂內的尸體忽然破棺而出释液,到底是詐尸還是另有隱情,我是刑警寧澤装处,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布误债,位于F島的核電站,受9級特大地震影響妄迁,放射性物質發(fā)生泄漏寝蹈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一登淘、第九天 我趴在偏房一處隱蔽的房頂上張望箫老。 院中可真熱鬧,春花似錦黔州、人聲如沸耍鬓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牲蜀。三九已至笆制,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涣达,已是汗流浹背在辆。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留度苔,地道東北人匆篓。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像寇窑,于是被迫代替她去往敵國和親鸦概。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容