最近公司更新2016年底的项目,需求加入环信的实时语音,视频,因为之前有聊天的实现,参照 作者:带你去旅行 的一篇《iOS 环信(3.1.5)快速集成单聊、群聊、视频及语音通话-新手》
1.首先替换了HyphenateFullSDK
2.重新更新SDK的依赖库:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.tbd
libz.tbd
libstdc++.6.0.9.tbd
libsqlite3.tbd
libiconv.tbd
3.SDK 不支持 bitcode,向 Build Settings → Linking → Enable Bitcode 中设置 NO。
4.语音和视频及时通话:因为都是环信写的 所以把有关及时通话的文件拖进来;
ChatDemoHelper CallViewController
1:在pct中加上 #define DEMO_CALL 1
2:全局搜索#if DEMO_CALL == 1 删掉,编译如有报错请仔细看是不是哪句代码重复了或者哪里没有注释完全。
3:ChatDemoHelper.m中 注册代码到——#pragma mark - EMCallManagerDelegate宏中间的代码都可以注释掉
重中之重:在根控制器中一定要把控制器赋给ChatDemoHelper:[ChatDemoHelper shareHelper].mainVC = self;
以上均引用 作者:带你去旅行 的一篇《iOS 环信(3.1.5)快速集成单聊、群聊、视频及语音通话-新手》的内容【已联系作者注明出处,很感谢作者内容给的帮助】
一切完成,运行之后,发现音视频通话,可以调起,并且显示已经和对方建立连接,但是对方接收不到。 What?? 找原因吧!
EMCallManagerDelegate【实时语音/视频相关的回调】的代理方法 没有调用
而 实时通讯相关代理 [[EMClient sharedClient].callManager addDelegate:self delegateQueue:nil];也注册了,<EMCallManagerDelegate>也在ChatDemoHelper引用了,逻辑上是对的可行的,但为什么就是不调用呢?? 很神奇的问题!搜寻了一天,未果,我决定寻求环信的技术支持,登录环信即时通讯云管理后台,点击【应用列表】-【名称】,在应用概况页面右下角点击【技术支持】提交工单
经过一天的沟通,终于解决了
哇!终于解决了!!
SDK初始化一定要放在设置rootViewController之前,EMCallManagerDelegate【实时语音/视频相关的回调】的代理方法才可以调用