环信集成

作者: 苦可乐 | 来源:发表于2016-08-23 00:42 被阅读496次

android中如何显示开发者服务器上的昵称和头像 http://www.imgeek.org/article/825307856
Android中显示头像(接上一篇文章看)
http://www.imgeek.org/article/825308239
环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)
http://www.imgeek.org/article/825307875
IOS中如何显示开发者服务器上的昵称和头像 http://www.imgeek.org/article/825307855草草们的忧伤:环信IM昵称和头像
http://www.imgeek.org/article/825308536
IOS快速集成环信IM - 基于官方的Demo优化,5分钟集成环信IM功能 http://www.imgeek.org/article/825307886
IOS中环信聊天窗口如何实现文件发送和预览的功能 http://www.imgeek.org/question/6260
环信SDK为用户开发IM相关的应用提供的一套完整的开发框架

5020DA21-3F8A-42B5-81BF-9E79C9A628F5.png
  1. SDK_Core : 为核心的消息同步协议实现,完成与服务器之间的信息交换

  2. SDK: 是基于核心协议实现的完整的IM功能,实现了不同类型消息的转发,会话管理,群组,好友,聊天室等功能

  3. EaseUI : 是一组IM相关的UI控件
    EaseUI 中用到的第三方库:

    • MWPhotoBrowser: 图片处理库,浏览显示
    • MJRefresh: 用于页面刷新
    • MBProgressHUD: 用于提示加载刷新
    • libopencore-amrnb.a,libopencore-amrwb.a: 用于 amr 与 wav 之间的转换
EBF46758-DB1D-47B3-B94B-D95CCE40B647.png

简述:
EMClient:是SDK的入口,主要完成登录,退出,连接管理等功能,也是获取其他模块的入口
EMChatManager: 管理消息的收发,完成会话管理等功能
EMContactManager:负责好友的添加删除,黑名单的管理
EMGroupManage:负责劝阻的管理,创建,删除群组,管理群组成员等功能
EMChatroomManager: 负责聊天室的管理

SDK 目录讲解

  • 环信 iOS HyphenateSDK 开发使用(不包含实时通话功能)
  • 环信 iOS HyphenateFullSDK (包含实时通话功能)
  • 环信 iOS doc SDK 相关API文档
  • 环信 iOS ChatUIDemo3.0 工程源码
  • 环信 iOS EaseUI 工程源码
  • 环信 iOS chatdemo-ui-3.x.x.ipa 打包的 ipa

注册

  • 注册模式分为两种
    <1> 开放注册
    <2> 授权注册

  • 开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。

  • 授权注册的流程应该是您服务器通过环信提供的 REST API
    注册,之后保存到您的服务器或返回给客户端。

注册:调用的接口

EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];if (error==nil) { NSLog(@"注册成功");}```
登录:调用

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];if (!error) { NSLog(@"登录成功");}```

自动登录
自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。

SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。

EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{ 
[[EMClient sharedClient].options setIsAutoLogin:YES];
}```
- 自动登录被取消的情况:
   - 用户调用了 SDK 的登出动作;
   - 用户在别的设备上更改了密码,导致此设备上自动登录失败;
   - 用户的账号被从服务器端删除;
   - 用户从另一个设备登录,把当前设备上登录的用户踢出。
那么在调用登录方法之前,应该先判断是否设置了自动登录,如果设置了,则不需要再调用了
     ```
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (!isAutoLogin)
 { 
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
}```
SDK中,如果发生自动登录,会有以下回调:

*/- (void)didAutoLoginWithError:(EMError *)aError
//添加回调监听代理:
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];```

重连
当掉线时,iOS SDK 会自动重连,只需要监听重连相关的回调,不需要进行任何操作

- (void)didConnectionStateChanged:(EMConnectionState)aConnectionState;
 * SDK连接服务器的状态变化时会接收到该回调 
*
* 有以下几种情况,会引起该方法的调用:
* 1. 登录成功后,手机无法上网时,会调用该回调 
* 2. 登录成功后,网络状态变化时,会调用该回调 
* 
* @param aConnectionState 当前状态 */

  • 退出登录
    • 主动退出

EMError *error = [[EMClient sharedClient] logout:YES];
if (!error) {
NSLog(@"退出成功");
}```

  • 被动退出登录

  • 正在登录的账号在另一台设备上登录;

  • 正在登录的账号被从服务器端删除。
    logout:YES:是否解除 device token 的绑定,在被动退出时 SDK 内部处理,不需要调用退出方法
    当登录账号在其他设备登录时会接受到该回调
    - (void)didLoginFromOtherDevice;
    当前登录账号已经被从服务器端删除时会收到该回调
    - (void)didRemovedFromServer;

  • 消息
    消息:IM 交互实体,在 SDK 中对应的类型是 EMMessageEMMessage 由 EMMessageBody 组成。

  • 构造文字信息

  • 构造图片消息

  • 构造位置信息

  • 构造语音消息

  • 构造视频消息

  • 构造文件消息

  • 构造透传消息
    SDK提供的一种特殊类型的消息,即CMD,不会存db,也不会走APNS,类似一种指令型的消息,比如您的服务器是要通知客户端做某些操作,您可以服务器和客户端提前约定好某个字段,当客户端收到约定好的字段时,执行某种特殊的操作

  • 构造扩展消息
    当 SDK 提供的消息类型不满足需求时,开发者可以通过扩展自 SDK 提供的文本、语音、图片、位置等消息类型,从而生成自己需要的消息类型。

这里是扩展自文本消息,如果这个自定义的消息需要用到语音或者图片等,可以扩展自语音、图片消息,亦或是位置消息。

  • 插入消息
  • 更新消息属性
  • 会话
  • 新建/获取一个会话
  • 删除会话
    删除单个会话
    删除批量会话根据 conversationId
    获取会话列表(3种方法)
    获取或创建

EMConversation *conversation = [[EMClient sharedClient].chatManager getConversation:@"8001" type:EMConversationTypeChat createIfNotExist:YES];获取内存中所有会话
NSArray *conversations = [[EMClient sharedClient].chatManager getAllConversations];```
获取DB中的所有会话

[NSArray](http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/) *conversations = [[EMClient sharedClient].chatManager loadAllConversationsFromDB];```
    
- 消息检索
可以通过关键字、消息类型、开始结束时间检索某个会话中的消息。

- 聊天
   - 发送消息(异步方法)
   - 接收消息1>注册消息回调  2>在线普通消息回调  3> 透传在线消息回调
   - 解析普通消息
   - 解析透传消息
   - 解析消息扩展属性 
   - 自动下载消息中的附件
       SDK 接收到消息后,会默认下载:图片消息的缩略图,语音消息的语音,视频消息的视频第一帧。
**请先判断你要下载附件没有下载成功之后,在调用以下下载方法,否则SDK下载方法会再次从服务器上获取附件。**

- 聊天会话功能扩展

EaseUI 提供现成的聊天会话 ViewController,可以通过继承 EaseMessageViewController 方式(参考 ChatDemo-UI3.0 中 ChatViewController)实现对聊天会话的扩展。

也可以直接使用 EaseMessageViewController,通过 EaseMessageViewControllerDelegate 和 EaseMessageViewControllerDataSource 两个协议实现对 EaseMessageViewController 的扩展。



- 自定义聊天样式
EaseMessageViewControllerDelegate

获取自定义消息 cell,根据 messageModel,用户自己判断是否显示自定义消息 cell。如果返回 nil 会显示默认;如果返回 cell 会显示用户自定义消息cell。

自定义用户的头像

/*! @method
@brief 点击消息头像
@discussion 获取用户点击头像回调
@param viewController 当前消息视图
@param messageModel 消息模型
@result
*/

  • (void)messageViewController:(EaseMessageViewController *)viewController didSelectAvatarMessageModel:(id<IMessageModel>)messageModel;
    //获取用户点击头像回调的样例:
  • (void)messageViewController:(EaseMessageViewController *)viewController didSelectAvatarMessageModel:(id<IMessageModel>)messageModel
    {
    //UserProfileViewController用户自定义的个人信息视图
    //样例的逻辑是选中消息头像后,进入该消息发送者的个人信息
    UserProfileViewController *userprofile = [[UserProfileViewController alloc] initWithUsername:messageModel.message.from];

[self.navigationController pushViewController:userprofile animated:YES];```

相关文章

  • 环信

    iOS 集成环信(四) 群聊iOS 环信集成(五) 加载会话列表

  • iOS开发-集成环信即时通讯会话列表和聊天头像的设置

    环信SDK集成 请参考iOS开发-在现有项目中集成环信SDK及EaseUI或者参考官方文档 此操作只针对已集成环信...

  • 环信

    环信EaseUI 导入环信SDK和EaseUI使用cocoapods集成 集成视频:http://www.imge...

  • iOS 环信集成

    1、流程类: 最新环信V3.3.7单聊集成与使用 iOS环信3.0集成 (三)单聊集成有视频 iOS 环信3.0D...

  • 环信UI3.0的集成方法

    介绍一下把环信EaseUI集成到项目中的具体实现步骤。 1.集成UI之前要把环信的SDK集成到项目中,环信SDK有...

  • iOS 环信SDK集成

    集成环信SDK:我觉得还是使用cocoaPod方便,几句命令行的事!我们集成环信 IM 2.0 Full: 集成U...

  • IOS环信集成单聊

    最近几天在集成环信 ,文档大概也看了 简单说下集成步骤! 1.SDK集成和环信配置 iOS SDK 介绍及导入 ...

  • iOS集成环信的会话列表

    参考IOS快速集成环信IM - 基于官方的Demo优化,5分钟集成环信IM功能 虽然网上的教程很多,但是自己集成的...

  • iOS 集成环信系统文件报错解决和其他坑

    1.集成环信系统文件报错解决集成环信系统文件报错如何解决1.1找到 EaseUI 下 EaseUI-Prefix....

  • 集成环信

    即时通讯已经是潮流中的潮流尾了,我决定抓住潮流的尾巴,于是集成了一下环信,早就听说环信的集成会有很多坑,确实不少,...

网友评论

    本文标题:环信集成

    本文链接:https://www.haomeiwen.com/subject/tuwwsttx.html