php环信发送消息,环信即时通讯 —— 消息、会话

标签:

1、消息EMMessage

环信支持文字、图片、位置、语音、视频、文件、透传、自定义八种消息构造。消息,即IM交互实体,在SDK中对应的类型是 **EMMessage**,EMMessage可以由多个符合协议的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];

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值