Android网易云信聊天室消息fromNick为空

2020-12-04  本文已影响0人  南窗云

问题及处理过程

1.聊天室需要初始化昵称( 中英文 或 中文及拼音 合并展示)
2.进入聊天室成功时,调用updateMyRoomRole 修改聊天室成员基本信息昵称
3.聊天室消息ChatRoomMessage 对象的 fromNick 为 null

Web端可以取到 fromNick ,而 Android 端取到的是 null

为了处理这种情况,采用了直接拉取聊天室所有成员的信息,然后自己匹配的方案,
但是多个成员及自己都退出聊天室,自己再次进入时,无法获取到已离开成员信息,则历史消息展示的昵称为空。

不禁疑问,为什么 fromNick 返回为null ,原来这个fromNick根本就是摆设!

提工单解决方案如下

解决方案

1.设置聊天室昵称

调用接口enterChatRoomEx(EnterChatRoomData roomData, int retryCount)进入聊天室时,通过EnterChatRoomData的setNick方法设置聊天室昵称,通过setAvatar方法设置聊天室头像地址。(注意,调用 updateMyRoomRole 更新聊天室自己昵称,sdk消息应该不协议昵称的,所以需要在进入聊天室就传入昵称)

 // 进入聊天室
    fun enterChatRoom() {
        // 非独立模式 进入聊天室 , 即已提前登录
        val currentStudent = classRoomData?.students?.find { student_id == it.id }
        val enterChatRoomData = EnterChatRoomData(room_id.toString()).apply {
            this.nick =  currentStudent?.student_name_cn?.plus(currentStudent.student_name ?: "")  ?: ""
        }
        NIMClient.getService(ChatRoomService::class.java)
            .enterChatRoomEx(enterChatRoomData, 3)
            .setCallback(object : RequestCallback<EnterChatRoomResultData> {
                override fun onSuccess(param: EnterChatRoomResultData?) {
                    pullMessageHistory()
                }

                override fun onFailed(code: Int) {
                }

                override fun onException(exception: Throwable?) {
                }
            })
    }
2. 获取消息

2.1 通过ChatRoomMessage对象的getChatRoomMessageExtension().getSenderNick()方法获取发送者的昵称
2.2 对于聊天室通知消息(例如:成员进入聊天室、成员离开聊天室,等等),因为通知消息是系统发送的,无法通过上述方法获取到发送者昵称等信息。当通过ChatRoomMessage的getMsgType()方法获取到消息类型为MsgTypeEnum.notification时,通过ChatRoomMessage的getAttachment()方法获取消息附件对象,并将其强转为ChatRoomNotificationAttachment,可以通过其getOperator()方法获取操作者(例如进入聊天室的成员)的accid,通过其getOperatorNick()方法获取操作者昵称

val name = {
     val attachment =  (item?.attachment as? ChatRoomRoomMemberInAttachment)
     item?.chatRoomMessageExtension?.senderNick ?: attachment?.operatorNick ?: ""
}

云信文档如下:

为什么不放在文档里,非要出问题,提工单才说有这个文档

《收到聊天室消息时怎么获取用户资料》

上一篇下一篇

猜你喜欢

热点阅读