ios环信3.0版本集成(包含音频通话)

dome下载地址: github.com/qpc2015/HuanXinTestDome 

2020.3.26

1.更新环信sdk到最新


ios环信3.0版本集成(包含音频通话)_第1张图片
ios环信3.0版本集成(包含音频通话)_第2张图片

由于最近需求需要给app添加聊天功能,所以想到了环信,上一次集成环信是去年了,当时也只是简单的集成简单聊天功能,也没太认真弄,过来大半年感觉变化好多,捣鼓了一天也终于把基本的一些功能弄完了,避免大家以后走相同的弯路,所以拿出来记录下以后再用也是极好的.

ios环信3.0版本集成(包含音频通话)_第3张图片

一.集成单聊

1.首先到环信官网下载3.0SDK的demo

2.然后将demo中的SDK加入到你的工程中(SDK的文件名是 HyphenateSDK),SDK文件中有两个.a包,一个是带实时通话功能,一个是不带的,选其中一个,另一个删除掉。 具体看链接如何添加SDK以及SDK的依赖库:http://docs.easemob.com/doku.php?id=im:300iosclientintegration:20iossdkimport

3.添加完SDK之后,添加聊天页面,环信demo中UI的部分都封装在了EaseUI文件中(具体是聊天页面,回话列表界面,联系人界面),找到环信 demo中的EaseUI文件。将EaseUI内部的EaseUI,以及EaseUIResource里的Resource,以及export文件 --->resource文件-->EaseUIResource.bundle,将这3个文件加到你的工程中,编译的过程会报错,下面是避 免报错的解决方法(还有就是会遇到三方库重复的报错,报错会提示你是哪个三方重复,看名称和路径自己删除一个)。然后将此两个头文件加入到项目pch文件中,,"UIKit/UIKit.h","EMSDKFull.h",同时在引入 #import "EaseUI.h"(UI的头文件)。

4.工程编译成功后,在你的appdelegate,写上初始化环信appkey,以及登录环信服务器的方法:http://docs.easemob.com/doku.p ... basic(收发消息是根据环信ID,客户端一定要写登录环信服务器的方法,这个环信ID就是你环信管理后台应用下的IM用户)。然后自己可以写一个按钮,在按钮的点击事件中,跳转到聊天页面,方法如下:

EaseMessageViewController *message = [[EaseMessageViewController alloc] initWithConversationChatter:"这里填接受消息方的环信ID" conversationType:EMConversationTypeChat]; (EMConversationTypeChat是单聊类型)

这里用到的聊天页面就是EaseUI中的EaseMessageViewController.m聊天页面,自己引一下头文件

5.在聊天界面点击表情会崩的解决办法,可以在 在EaseMessageViewController.m类中的 viewdidload中的最后加上    EaseEmotionManager *manager= [[EaseEmotionManager alloc] initWithType:EMEmotionDefault emotionRow:3 emotionCol:7 emotions:[EaseEmoji allEmoji]];

[self.faceView setEmotionManagers:@[manager]];来进行处理。

6.在聊天界面收发消息,退出页面后再重新进入会看不到之前消息的处理方法,也是在EaseMessageViewController.m类中的 viewdidload中 调用[self tableViewDidTriggerHeaderRefresh];就可以了。

ios环信3.0版本集成(包含音频通话)_第4张图片

二.实时语音

音视频是独立于单聊界面的,需要单独集成,如果不单独集成,在单聊的更多功能中点击语音通话和视频通话是没有效果的,并且实时音视频暂时只支持一对一,不支持一对多或群聊。

1.集成实时通话的前提是集成好单聊,并且使用的是libEaseMobClientSDK.a包,因为这个包 包含实时通话的功能

2.将demo3.0中的Call文件,ChatDemoHelper.h,ChatDemoHelper.m(实时通话的界面)以及Resources(通话界面的资源图片)加到你自己的工程中.(记得将这些文件拷进去的时候,在自己的项目pch中加上此宏[#define DEMO_CALL 1],就因为少了这让我找了一下午的bug)

3.点击实时通话或者视频的按钮,实际是发起的通知,在你工程中的主控制器中监听这个通知,在通知的方法中实现发起实时通话的方法以及跳转到通话界面


ios环信3.0版本集成(包含音频通话)_第5张图片

4、在EaseMessageViewController.m中,实现了EaseChatBarMoreViewDelegate方法moreViewAudioCallAction,发出KNOTIFICATION_CALL通知;

5、在根控制器中接收通知,并实现callOutWithChatter方法,该方法中通过判断实时音视频的类型和必要条件去发出相应的音视频请求,在发出请求后跳转到CallViewController中,等待对方接听或挂断;


如有问题还望指正,如果有帮助,也忘亲不要吝啬star,谢谢!

********将来的你一定会感激现在拼命的自己,愿每一个努力的人都能有收获!********

我的传送门: 个人博客  github

你可能感兴趣的:(ios环信3.0版本集成(包含音频通话))