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

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

更多相关文章

  1. Android使用Notification通知栏功能的封装
  2. 简单的三方登录SDK示例,Android(安卓)Activity之间数据的传递
  3. Android(安卓)异步任务 设置 超时使用handler更新通知功能
  4. Android(安卓)ANR问题定位
  5. Android异步更新UI的方式之使用Handler消息传递机制
  6. Android(安卓)开发即时聊天工具 YQ :(五) 发送消息
  7. Android(安卓)仿微信发送语音消息的功能
  8. 拖动 view
  9. Android开发学习之电话、短信、联系人

随机推荐

  1. Android adb LOGCAT显示中文
  2. 视频Android studio1.3.1从菜鸟到高手--
  3. android 动画使用方式
  4. Android中SQLite版本升级
  5. android sd卡读写 附源码
  6. android permission list
  7. Android从一个APP跳转到另一个APP的主界
  8. 第九章使用ContentProvider实现数据共享
  9. Android中的color.xml的说明
  10. 如何在ActionBar上面添加popup menu