Home

Awesome

唐僧叨叨(官网

唐僧叨叨 悟空IM提供动力悟空IM

唐僧叨叨基于底层通讯框架悟空IM实现聊天功能。Demo已实现文本图片语音名片emoji,群聊@某人,消息链接手机号邮箱识别等功能。聊天设置支持名称修改头像修改公告编辑消息免打扰置顶保存到通讯录聊天内昵称群内成员昵称显示等丰富的设置功能。由于demo是模块化开发,开发者可完全按自己的开发习惯进行二次开发。

唐僧叨叨特点

项目模块

唐僧叨叨是模块化开发,不限制开发者编码习惯。以下是对各个模块的说明

wkbase

基础模块 里面包含了WKBaseApplication文件,该文件主要是对一些通用工具做些初始化功能,如:网络库初始化,本地db文件初始化等。WKChatBaseProvider聊天中重要的基础消息item提供者,所有消息item均继承于此类,里面处理消息气泡样式,头像显示样式,消息间距等很多统一且重要的功能。更多功能请查看源码

wkuikit

聊天模块 包含了聊天页面ChatActivity,该文件处理了聊天信息的展示,离线获取,刷新消息状态等聊天中遇到的各个场景。ChatFragment 最近会话列表,新消息红点,聊天最后一条消息展示等。此模块还包括app首页信息,联系人信息,我的页面等

wklogin

登录模块 包含登陆注册,第三方授权登录,修改账号密码,授权pc/web登录等功能,实现其他方式登录可在此模块进行二次开发

wkpush

推送模块 唐僧叨叨集成了华为,小米,vivo,oppo厂商推送功能。开发者二次开发是只需要替换对应的appID和appKey即可

由于开发有限,如需其他厂商的推送功能,只需在此模块按官方文档集成即可

wkscan

扫一扫模块 包含扫描二维码进行加好友,加入群聊等

自定义消息Item

注意这里只是介绍如何将自定义的消息item展示在消息列表中,消息model的实现需要去查看悟空IM文档

唐僧叨叨实现自定义消息Item也十分简单。只需要实现两步即可

1、 编写消息item provider。继承WKChatBaseProvider文件,重写getChatViewItem方法如下

override fun getChatViewItem(parentView: ViewGroup, from: WKChatIteMsgFromType): View? {
        return LayoutInflater.from(context).inflate(R.layout.chat_item_card, parentView, false)
    }

布局中不需要考虑头像,名称字段

重写setData方法 获取控件并将控件填充数据。如下

override fun setData(
   adapterPosition: Int,
   parentView: View,
   uiChatMsgItemEntity: WKUIChatMsgItemEntity,
   from: WKChatIteMsgFromType
) {
   val cardNameTv = parentView.findViewById<TextView>(R.id.userNameTv)
   val cardContent = uiChatMsgItemEntity.wkMsg.baseContentMsgModel as WKCardContent
   cardNameTv.text = cardContent.name
   // todo ...
}

这里的WKCardContent消息对象是基于悟空IMsdk的实现,所有自定义消息model必须基于悟空IM。关于悟空IM自定义消息可查看Android文档中的自定义消息

设置item的消息类型

override val itemViewType: Int
   get() = WKContentType.WK_CARD

2、完成消息item提供者的编写后需将该item注册到消息提供管理中。

WKMsgItemViewManager.getInstance().addChatItemViewProvider(WKContentType.WK_LOCATION, WKCardProvider())

对此自定义消息Item已经完成,在收到此类型的消息时就会展示到聊天列表中了 详细实现步骤可以查看代码wkuikit模块中provider包中的WKImageProvider文件

效果图

对方正在输入语音消息合并转发
快速回复群内操作其他功能

由于GIF被压缩,演示效果很模糊。真机预览效果更佳

app下载体验

<img src='./imgs/ic_download_qr.png' width=35%/>

如果扫描错误可通过 安装地址 下载

许可证

悟空IM 使用 Apache 2.0 许可证。有关详情,请参阅 LICENSE 文件。