环信集成

作者: 苦可乐 | 来源:发表于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];```

    相关文章

      网友评论

        本文标题:环信集成

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