注册

头像昵称的简述和处理方案

环信的头像昵称,是一个老大难的问题,但是环信负责的是im的通讯能力,它只负责消息的通畅,头像昵称啥的,不是它要处理的,所以,只能给出一些建议性的解决方案。
 
从实际角度出发,有几种场景需要使用头像:
1、聊天的详情页面。
2、会话列表页面。
3、好友页面。
 
针对以上几个场景,
在聊天页面,接受消息的时候,需要知道对方叫什么,所以只需要发送方发消息中,把自己的名字,昵称带过来就行。
这里可以选择用message的属性ext来实现。
 
message.ext = @{@"nick":@"李明"};


9CF6F919-BA41-48C7-8D8C-85D83E1838D8.png


 
 
当接收方(韩梅梅)收到消息后,只需要解析message中的ext字段,就可以知道发送方叫李明。
之后再ui上显示就可以了。此处的处理,单聊和群聊是一样的。
 
注意事项:
发送方设置ext一定要在消息发送之前。
 
 
2、会话列表中展示:
上文说道,ext属性是message的,而会话的对象是conversation。此时,如果需要得到对方最后一条消息,可以使用
EMConversation对应的属性lastReceivedMessage。这个属性的描述是
 
/*!
 *  \~chinese
 *  收到的对方发送的最后一条消息
 *
 *  @result 消息实例
 *
 *  \~english
 *  Get last received message
 *
 *  @result Message instance
 */
- (EMMessage *)lastReceivedMessage;
 
这个时候,我们只需要去去 conversation.lastReceivedMessage.ext, 也就可以得到会话列表的头像了。
 
 
注意:
群聊里,不能通过最后一条对方发的消息来处理,环信的群属性中,没有头像这一条,所以也不能直接从环信这边取,但是它有群描述。这里提供两个思路:
* 把群属性放到自己的服务器,群头像也放到自己的服务器上,然后根据群id去自己服务器获取。
* 把头像放到群名描述里,之后用自己定义的格式隔开,取头像的时候,就直接从群描述的url来取。
 
3、好友列表中头像和昵称的获取。
好友列表,好友的信息环信并没有提供多少属性,只提供了环信id。所以这个地方我们就没办法从环信这边获取任何信息了。这个地方说下环信demo的解决方式:
 
环信demo中,用了一个第三方的云服务叫Parse,Parse的作用,是可以把k-v的键值对存到云服务器上。环信demo就把好友列表中,好友的环信id作为key,其他属性作为value存到了Parse上。这样在展示的时候,就直接去parse上下载,得到对应的昵称和url。 
 
注意:
不过就我了解,国外的Parse服务已经停止了。目前demo里用的是环信自己搭建的一个Parse服务,环信官方也没有承诺该服务始终免费,记得当时也是说过是为了demo展示用才搭建的,所以建议还是自己找一些其他提供类似功能的云服务来使用比较好。
 
 
 

6 个评论

很受用!环信稿酬计划,妥妥的走向人生巅峰~
看这里,看这里 https://github.com/DoloresTeam 可以很方便的搭建服务端,和环信配合。
怎么搞聊天列表中的昵称显示呢
取lastMessage 的 ext 字段.
总觉得每次发聊天消息在ext里面带头像昵称都是很傻的做法…… 单聊我好像是丢到了conversation的ext里
16年的时候 我放在聊天信息里面的 今天新的项目要用了 想用你这个方案

要回复文章请先登录注册