环信即时通讯 —— 消息、会话

1、消息EMMessage

  环信支持文字、图片、位置、语音、视频、文件、透传、自定义八种消息构造。消息,即IM交互实体,在SDK中对应的类型是 **EMMessage**,EMMessage可以由多个符合<IEMMessageBody>协议的body组成,但是 推荐使用一个body。

2、消息构造

1> 设置消息的内容

文字消息:

EMChatText *msgChat = [[EMChatText alloc] initWithText:@"要发送的消息"];

图片消息:

EMChatImage *msgChat = [[EMChatImage alloc] initWithUIImage:img displayName:@"displayName"];

位置消息:

EMChatLocation *msgChat = [[EMChatLocation alloc] initWithLatitude:35.1 longitude:35.1 address:@"地址"];

语音消息:

EMChatVoice *msgChat = [[EMChatVoice alloc] initWithFile:recordPath displayName:@"audio"];
voice.duration = aDuration;

视频消息:

EMChatVideo *msgChat = [[EMChatVideo alloc] initWithFile:localPath displayName:@"displayName"];

文件消息:

EMChatFile *msgChat = [[EMChatFile alloc] initWithFile:localPath displayName:@"displayName"];

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

EMChatCommand *msgChat = [[EMChatCommand alloc] init];
msgChat.cmd = @"reason";

2> 消息构造,通过前面设置的消息内容,生成body及消息:

EMCommandMessageBody *body = [[EMCommandMessageBody alloc] initWithChatObject:msgChat];
// 生成message
EMMessage *message = [[EMMessage alloc] initWithReceiver:@"接收消息的用户名" bodies:@[body]];

自定义消息扩展:

  有时候需要在消息中携带一些扩展内容,用来实现特殊需求,比如阅后即焚等。EMMessage提供了ext属性,撰文用来存放扩展内容。ext属性是NSDictionary类型,key和value必须是基本类型,且不能是json。可以这样使用:EMMessage.ext = @{@”key”:@”value”};

3> 消息类型

message.messageType = eMessageTypeChat; // 设置为单聊消息
//message.messageType = eConversationTypeGroupChat;// 设置为群聊消息
//message.messageType = eConversationTypeChatRoom;// 设置为聊天室消息

4> 插入消息

message.deliveryState = eMessageDeliveryState_Delivered;
[[EaseMob sharedInstance].chatManager insertMessageToDB:message];

3、更新消息属性

/*!
 @method
 @brief  更新消息发送状态
 @result 是否更新成功
 */
- (BOOL)updateMessageDeliveryStateToDB;

/*!
 @method
 @brief  更新消息扩展属性
 @result 是否更新成功
 */
- (BOOL)updateMessageExtToDB;

/*!
 @method
 @brief  更新消息的消息体
 @result 是否更新成功
 */
- (BOOL)updateMessageBodiesToDB;

/*!
 @method
 @brief  修改当前 message 的发送状态, 下载状态为 failed (crash 时或者 terminate)
 @return 是否更新成功
 */
- (BOOL)updateMessageStatusFailedToDB;

4、会话

会话:操作聊天消息EMMessage*的容器,在SDK中对应的类型是EMConversation*;

1>  创建会话

EMConversation *conversation = [[EaseMob sharedInstance].chatManager conversationForChatter:@"聊天对象" conversationType:eConversationTypeChat];

2>  删除会话

// deleteMessage,是否删除会话中的message,YES为删除
// append2Chat,是否更新内存中内容
 [[EaseMob sharedInstance].chatManager removeConversationByChatter:@"聊天对象" deleteMessages:YES append2Chat:YES];   //删除单个会话
[[EaseMob sharedInstance].chatManager removeConversationsByChatters:chatters deleteMessages:YES append2Chat:YES];  //批量删除会话
[[EaseMob sharedInstance].chatManager removeAllConversationsWithDeleteMessages:YES append2Chat:YES];  //删除所有会话

3>  获取会话列表(三种方法)

EMConversation *conversation = [[EaseMob sharedInstance].chatManager conversationForChatter:@"聊天对象" conversationType:eConversationTypeChat];      //直接创建
NSArray *conversations = [[EaseMob sharedInstance].chatManager conversations];  //获取内存中所有会话
NSArray *conversations = [[EaseMob sharedInstance].chatManager loadAllConversationsFromDatabaseWithAppend2Chat:YES];  //获取DB中所有会话

4>  获取会话未读消息数

[EMConversation unreadMessagesCount];
时间: 2024-08-10 21:06:36

环信即时通讯 —— 消息、会话的相关文章

环信即时通讯单聊集成,添加好友,实现单聊

前段时间由于项目需要,了解一下环信即时通讯,然后自己通过查资料写了一个基于环信的单聊demo,一下是源码,希望可以帮助到需要的小伙伴. 首先,我们要去环信官网注册账号,这个我就不多说了,注册完登录,创建应用,新建两个测试IM用户, 这里主要用到的是应用标示(Appkey) 好了,在环信官网下载对应的sdk,这个不多说了,最好下载一个文档,里面讲的很详细的. 好了,一下是源码 AppManager.java public class AppManager { private static Stac

环信即时通讯 —— IOS客户端集成

1.环信官网介绍 2.准备工作: 登录环信开发者账号并创建应用.制作并上传推送证书(开发.生产): 3.下载SDK:通过Cocoapods下载或到官网下载 ,对于Cocoapods下载: 不包含实时语音版本SDK(EaseMobClientSDKLite),引用时 #import <EaseMobSDK/EaseMob.h> pod 'EaseMobSDK', :git => 'https://github.com/easemob/sdk-ios-cocoapods.git'  包含实时

Android 基于环信即时云的IM开发

假如我们想要快速实现一个即时通讯功能,最快捷的方法就是借助网络上的即时云服务.下面我们讲述一下如何利用环信实现一个IM功能. 首先下载环信的SDK,也就是几个库,把demo里面的HXSDKHelper.java,HXSDKModel.java,DefaultHXSDKModel.java,HXPreferenceUtils.java四个文件复制到新建的工程下.稍作修改. 首先在Application中实现初始化SDK public static DemoHXSDKHelper hxSDKHelp

环信即时聊天步骤

1:注册账号 2:下载sdk 3:导入modle EaseUI 4:讲model加入到主项目 5:登陆功能:代码如下: EMClient.getInstance().login(userName,password,new EMCallBack() {//回调 @Override public void onSuccess() { EMClient.getInstance().groupManager().loadAllGroups(); EMClient.getInstance().chatMa

环信透传消息,无法回调

震 [[EMClient sharedClient].chatManager sendMessageReadAck:msg completion:^(EMMessage *aMessage, EMError *aError) { BSLog(@"----%@---%@---", aMessage, aError); }]; [[EMClient sharedClient].chatManager sendMessage:msg progress:^(int progress) { }

iOS环信即时聊天

一.注册登陆环形开发者账号,并且创建应用,获得对应的AppKey 二.根据实际情况制作并上传推送证书(开发环境推送证书sandbox,请选择 Apple Push Notification service SSL  / 生产环境证书production,请选择 Apple Push Notification service SSL ) 详细制作步骤属于iOS开发基本知识,这里不再做详细说明. 三.集成iOS 环信SDK.为了方便快速,这里我们直接使用Cocoapods集成 在终端cd到该工程跟目

环信开源计划开启即时通讯云开源平台时代

12月22日,在"首届移动社交创新价值峰会"上,环信即时通讯云(http://www.easemob.com)发布了被称为"4X100计划"的<环信开源平台计划>,此计划将推动即时通讯云行业进入开源平台时代.而一个中国IT界崭新的开放共赢的生态体系也将随之逐步建立起来. 图注:环信CEO刘俊彦在峰会上解读环信开源平台计划 "2014年,即时通讯云获得了很好的发展,环信也帮助了很多合作伙伴实现了移动社交的创新.那么2015年,如何驱动移动社交创新

源码提供!Android即时通讯和sns开源项目汇总

博客原地址: Android即时通讯和sns开源项目汇总 这是一个整理即时通讯(IM)和社交系统(SNS)优秀开源项目的文档,项目上传github欢迎提交更新. github地址:https://github.com/CameloeAnthony/Perfect_IM_SNS 一 即时通讯和社交系统平台 1 环信(推荐) 2 阿里百川 云旺 3 融云 4 OpenSNS -- #二 基于环信的即时通讯开源项目 数据整理自环信官网,网络数据和github.更多信息请参考环信官方网站和ImGeek

李洪强iOS开发之-环信02.2_环信官网下载环信 SDK

李洪强iOS开发之-环信02.2_环信官网下载环信 SDK 移动客服即时通讯云 iOS SDK 当前版本:V3.1.4 2016-07-08 [ 版本历史 ] | 开发指南 | 知识库 | Demo源码 | 最新SDK下载Demo扫码安装 切换至v2.x版本 iOS SDK v2.x 当前版本:V2.2.6 2016-06-28 [ 版本历史 ] | 开发指南 | 知识库 | Demo源码 | 最新SDK下载Demo扫码安装 返回v3.x版本 Android SDK 当前版本:V3.1.4 20