环信easeUI实现头像昵称

作者: zzzzzzzzzl | 来源:发表于2017-02-15 15:02 被阅读1427次

           easeUI集成应用其实简单很多很多,里面也封装了关于头像昵称的设置,所需要做的只是把代理方法实现,前提是你的聊天页面等都是继承easeUI里面的相关的类去做的。1.聊天页面:

    - (id)messageViewController:(EaseMessageViewController *)viewController

    modelForMessage:(EMMessage *)message


    上图是我修改后的代码示例,头像和昵称都是写死的,而你的应该是从服务器获取或者消息的扩展中获取到的,当然最好是提前保存在本地,从本地获取,这样就可以做到更新头像后历史的头像也会更新。

    2.会话列表:

    -(id)conversationListViewController(EaseConversationListViewController*)

    conversationListViewController   modelForConversation:(EMConversation *)conversation

    在上图的位置赋值,同样的,头像和昵称根据conversation.chatter(会话对方的username = message.from =环信登陆id)从本地获取,下半的判断是群聊的,不用改,demo的title就是群名称,头像同样的方法去赋值即可。注意一点,这里是根据会话的扩展去获取群名称的,需要在创建群里会话的时候就给这个会话的扩展赋上名称,具体可以参考demo实现。

    聊天页面这里有个的小问题,有时候会不显示,这回调某行不走的情况,原因未知..  可以在下面截图处理下头像昵称解决这个问题

    -----------------------------------我是分割线----------------------------------

    大家会发现需要赋值头像的时候才去网络请求这个头像昵称,这样不仅耗时不及时而且浪费人力财力。所以大家可以通过发送的消息扩展来传递头像昵称,这样头像昵称信息还会跟随消息保存到本地数据库。

    基于easeUI来讲,添加扩展的位置在

    然后在赋值的时候就可以直接从message.ext里面获取了,也不需要判断是谁发的消息。

    很方便,但是需要注意以下几点:

    1. 添加扩展的时候,NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:message.ext];

    [dic setValue:@"" forKey:@""];

    message.ext = dic;

    先要一个可变字典获取到message.ext,然后加上你的数据,再赋值给message.ext,不然就会覆盖其他的扩展,比如自定义的动态表情等等;

    2.在会话列表加头像的时候,可以获取会话对方的最新一条消息的扩展conversation.lastReceivedMessage.ext;

    3.收到消息后先把头像昵称等信息从扩展里面取出来,根据环信id保存本地,在赋值的地方从本地获取,这样就可以避免历史头像不更新的问题;

    4.如果没有发消息之前呢?可以选择一个默认头像。

    其实聊天功能一般都是嵌入app的,用户聊天之前应该可以拿到对方的信息,包括环信id、头像和昵称等,然后保存到本地,默认聊天的时候再取出加载即可。

    相关文章

      网友评论

      本文标题:环信easeUI实现头像昵称

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