前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学问Chat UI(4)

学问Chat UI(4)

作者头像
用户1148881
发布2018-01-17 15:05:56
1.9K0
发布2018-01-17 15:05:56
举报
文章被收录于专栏:jianhuicodejianhuicode

前言

写这个组件是在几个月前,那时候是因为老大讲RN项目APP的通讯聊天部分后面有可能自己实现,让我那时候尝试着搞下Android通讯聊天UI实现的部分,在这期间,找了不少的Android原生项目:蘑菇街的TeamTalkChatDemoEmojiChat,考虑到扩展性与改造复杂度,选择了学习融云 IM 界面组件。其实一直想写这个项目介绍,学习需要思考与总结,如果学了以后没有总结或者思考,慢慢地时间会磨平他们。

AuroraChat

AuroraChat 是个基于融云UI库的即时通讯(IM)RN UI组件。

本 UI 组件提供了消息列表、输入视图等常用组件,支持常见的消息类型:文字、图片、语音等。

支持 Android,暂不支持iOS 平台。

演示
演示

功能

可以基于本 UI 库实现的功能:

  • 消息列表的展示;
  • 支持多种消息类型;
  • 对每种消息类型的点击处理;
  • 支持用户头像。
  • 消息输入:
  • 支持多种消息类型;
  • 语音输入组件;
  • 相册照片选取组件;

当前支持展示与输入的消息类型:

  • 文字
  • 图片
  • 语音

使用

当前提供的组件:

Android

React Native

ChatView for React Native

配置

  • 用法
代码语言:javascript
复制
import {DeviceEventEmitter} from "react-native";
import ChatView from "../rychatview";

数据格式

加载消息列表UI,需要传递一定格式的消息对象

  • message 对象格式:
代码语言:javascript
复制
message = {  // text message
     "type": "text",
     "own": false,//是否为当前用户
     "content": "发送文本内容",
     "ts": "发送时间",
     "uid": "当前用户id",
     "msgid": "消息uid",
     "senduserinfo": "发送者信息"
}    

message = {  // image message
     "type": "image",
     "own": false,//是否为当前用户
     "content": "图片URL",
     "ts": "发送时间",
     "uid": "当前用户id",
     "msgid": "消息uid",
     "senduserinfo": "发送者信息"
}

message = {  // voice message
     "type": "voice",
     "own": false,//是否为当前用户
     "duration": "50",//时长 单位:秒
     "content": "语音URL",
     "ts": "发送时间",
     "uid": "当前用户id",
     "msgid": "消息uid",
     "senduserinfo": "发送者信息"
}

message = {  // chatInfo message
     "userid": "用户id",
     "name": "昵称",
     "portraitUri": "头像URL",
     "chattype": "聊天类型",//群组 私聊
     "targetid": "目标id"
}

ChatView介绍

Props 属性

chatInfo

PropTypes.object:登录聊天服务器后设置初始化

代码语言:javascript
复制
curChatInfo:  {
                "userid": "1001",
                
                "name": "golike",
                "portraitUri":"http://img0.imgtn.bdimg.com/it/u=651843754,4204488972&fm=213&gp=0.jpg",

                "chattype": "priv",

                "targetid": "1002"
            }
isOnRefresh

PropTypes.bool:下拉刷新的标识符

OnRefresh

PropTypes.function: () => {//重新网络请求 }

DeviceEventEmitter监听 uploadMsg事件

监听来自原生的不同消息

代码语言:javascript
复制
  componentDidMount() {
        //设置来自原生的消息的监听
        this.subscription = DeviceEventEmitter.addListener('uploadMsg', this.onUpdateMessage);
    }

  componentWillUnmount() {
        //移除监听器
        this.subscription.remove();
    }

组件内的方法

getHistoryMessage

PropTypes.function:加载历史消息

代码语言:javascript
复制
  historyMsgs = [ 前面消息类型中的消息,*,...]
 (historyMsgs) => {//连接消息服务器成功后获取的历史消息列表,发送给原生};
sendTextMsg

PropTypes.function:

代码语言:javascript
复制
 (msg) => {//从js构造文本数据发送给原生};
sendRichTextMsg

PropTypes.function:未实现

代码语言:javascript
复制
 (msg) => {//从js构造富文本数据发送给原生};
sendPicMsg

PropTypes.function:

代码语言:javascript
复制
 (msg) => {//从js构造图片数据发送给原生};
sendVoiceMsg

PropTypes.function:

代码语言:javascript
复制
 (msg) => {//从js构造语音数据发送给原生};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • AuroraChat
    • 功能
      • 使用
        • Android
        • React Native
      • ChatView for React Native
        • 配置
          • 数据格式
            • ChatView介绍
              • Props 属性
              • DeviceEventEmitter监听 uploadMsg事件
              • 组件内的方法
          相关产品与服务
          即时通信 IM
          即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持 Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档