Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-unicloud-zh
提交
98f3e72a
U
unidocs-unicloud-zh
项目概览
DCloud
/
unidocs-unicloud-zh
通知
124
Star
4
Fork
31
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-unicloud-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
98f3e72a
编写于
11月 07, 2024
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update uni-im.md
上级
ee2f1886
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
191 addition
and
213 deletion
+191
-213
docs/uni-im.md
docs/uni-im.md
+191
-213
未找到文件。
docs/uni-im.md
浏览文件 @
98f3e72a
**uni-im 已开放需求征集和投票**
[
点此前往
](
https://vote.dcloud.net.cn/#/?name=uni-im
)
# 简介
uni-im
是云端一体的、全平台的、免费的、开源即时通讯系统。
uni-im
是一款云端一体、全平台、免费且开源的即时通讯系统
-
基于uni-app,App、小程序、web全端兼容
-
基于uniCloud,前后端都使用js开发
-
基于
[
uni-push2
](
https://uniapp.dcloud.net.cn/unipush-v2.html
)
,专业稳定的全端推送系统
...
...
@@ -17,7 +17,7 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统
下载地址:
[
https://ext.dcloud.net.cn/plugin?name=uni-im
](
https://ext.dcloud.net.cn/plugin?name=uni-im
)
## 特点优势
-
性价比高
;前后端代码均免费开源,相比同类产品使用uni-im仅需花费极少的托管在uniCloud(serverless服务器)产生的费用
[
详情查看
](
#cost
)
-
性价比高
,前后端代码均免费开源,与同类产品相比,使用uni-im仅需支付因托管在 uniCloud(serverless 服务器)而产生的少量费用,详情可查看
[
费用说明部分
](
#cost
)
-
全端可用
-
App端支持nvue,更好的长列表性能。list组件性能优势
[
详情参考
](
https://uniapp.dcloud.net.cn/component/list.html
)
-
中心化响应式数据管理,切换会话无需重新加载数据,更流畅的体验
...
...
@@ -57,20 +57,23 @@ uni-im本身并不收费,实际使用中需要依赖uniCloud云服务,会产
相比市面上同类型产品,使用uni-im仅需花费如此便宜的uniCloud(serverless服务器)费用;在价格这块uni-im性价比极高。
>注:由于uni-im会持续升级,其服务端运行逻辑也会不断优化,或新增其他逻辑,这可能导致上述费用计算方法中的数据库操作次数发生变化。因此,此处的费用算法仅作参考。
# 快速部署体验
## 前提条件
1.
开通uniCloud并创建服务空间
[
控制面板
](
https://unicloud.dcloud.net.cn/
)
传统的IM产品服务端代码托管在服务商名下的服务器内,你只拥有代码和产生的数据的使用权,并非所有权;而uni-im的前后端代码都是开源的,并且托管在您名下的uniCloud(
[
serverless
](
https://uniapp.dcloud.net.cn/uniCloud/#%E4%BB%80%E4%B9%88%E6%98%AFserverless
)
服务器)内。
2.
开通
`uni-push2.0`
(注意:
**无论是APP、小程序、web端都需要开通,否则消息将无法实时更新**
)
[
点此前往开通
](
https://uniapp.dcloud.net.cn/unipush-v2.html#%E7%AC%AC%E4%B8%80%E6%AD%A5-%E5%BC%80%E9%80%9A
)
> 步骤1中开通的uniCloud是公有云服务器。若您的项目有特殊需求,比如政府项目、对信息保密性要求较高的企事业单位项目或者用户都在海外的项目,这种情况下则需要进行私有化部署,详情可点击[此处](https://doc.dcloud.net.cn/uniCloud/software/#uni%E4%BA%91%E5%BC%80%E5%8F%91%E8%BD%AF%E4%BB%B6%E7%89%88)。
## 体验步骤
1.
打开
`uni-im`
插件下载地址:
[
https://ext.dcloud.net.cn/plugin?name=uni-im
](
https://ext.dcloud.net.cn/plugin?name=uni-im
)
2.
点击
`使用HBuilderX导入示例项目`
3.
对项目根目录uniCloud点右键选择“云服务空间初始化向导”界面按提示部署项目(注意:选择绑定的服务空间,须在uni-push2.0的
[
web控制台
](
https://dev.dcloud.net.cn/pages/app/push2/info
)
关联)
4.
`运行项目`
到2个不同的浏览器,因为在同一个浏览器打开相同网络地址(ip或者域名)的uni-im项目,socket会相互占线。
所以需要使用两个浏览器(或者使用浏览器
`打开新的无痕式窗口`
功能充当第二个浏览器)分别
`注册账号并登录`
,
到此部署已经结束
5.
向对应的用户发起会话,通过访问路径:
`/uni_modules/uni-im/pages/chat/chat?user_id=`
+
`对应的用户id`
即可
4.
需要在两个不同的浏览器中
`运行项目`
,因为在同一个浏览器打开相同网络地址(ip或者域名)的uni-im项目,socket会相互占线。
所以需要使用两个浏览器(可以使用浏览器的
`无痕式窗口`
功能充当第二个浏览器)分别
`注册账号并登录`
,到此部署已经结束
5.
向指定用户发起会话,通过访问路径:
`/uni_modules/uni-im/pages/chat/chat?user_id=`
+
`指定用户的id`
即可
## 部署到自己的项目
1.
打开
`uni-im`
插件下载地址:
[
https://ext.dcloud.net.cn/plugin?name=uni-im
](
https://ext.dcloud.net.cn/plugin?name=uni-im
)
...
...
@@ -149,10 +152,11 @@ export default defineConfig({
```
4.
配置Schema扩展Js的公共模块或扩展库
先复制示例项目的
`/uni_modules/uni-id-pages/uniCloud/database/uni-id-users.schema.json`
文件覆盖到自己项目,解决表操作权限问题。
由于uni-im的数据库的触发器依赖了
`uni-im-utils`
,需要在目录
`uniCloud/database`
右键 -> 选择“配置Schema扩展Js的公共模块或扩展库” -> 在选择项目的公共模块中找到
`uni-im-utils`
并勾选 -> 点击确定,完成配置;然后在目录
`uniCloud/database`
右键 -> 上传Schema扩展Js的配置。
5.
部署到uniCloud
对
项目根目录uniCloud点右键,选择“云服务空间初始化向导” 按提示部署项目(注意:选择绑定的服务空间,须在uni-push2.0的
[
web控制台
](
https://dev.dcloud.net.cn/pages/app/push2/info
)
关联)
5.
部署到uniCloud
在
项目根目录uniCloud点右键,选择“云服务空间初始化向导” 按提示部署项目(注意:选择绑定的服务空间,须在uni-push2.0的
[
web控制台
](
https://dev.dcloud.net.cn/pages/app/push2/info
)
关联)
6.
登录uni-im
...
...
@@ -299,149 +303,151 @@ uni.navigateTo({
## 目录结构
<pre
v-pre=
""
data-lang=
""
>
<code
class=
"lang-"
style=
"padding:0"
>
uni_modules
├─其他module
└─uni-im
├── changelog.md
├── components 组件目录
│ ├── uni-im-load-state 加载状态提示
│ ├── uni-im-chat-input 对话界面输入框(web-pc专用)
│ ├── uni-im-contextmenu 自定义右键菜单(web-pc专用)
│ ├── uni-im-conversation 会话
│ ├── uni-im-conversation-list 会话列表
│ ├── uni-im-filtered-conversation-list 过滤后的会话(搜索聊天记录时展示)
│ ├── uni-im-group-notification 群公告
│ ├── uni-im-icons 图标
│ ├── uni-im-img 图片
│ ├── uni-im-msg 聊天消息
│ │ ├── types 各类消息类型
│ │ │ ├── code.vue 代码
│ │ │ ├── file.vue 文件
│ │ │ ├── history.vue 历史(转发的聊天记录)
│ │ │ ├── image.vue 图片
│ │ │ ├── rich-text.vue 富文本
│ │ │ ├── sound.vue 声音
│ │ │ ├── system.vue 系统
│ │ │ ├── text.vue 纯文本
│ │ │ ├── userinfo-card.vue 用户信息卡片
│ │ │ └── video.vue 视频
│ │ └── popup-control.vue 弹出式消息操控(集成:撤回、复制、回复、转发、多选)
│ ├── uni-im-msg-list 消息列表
│ ├── uni-im-share-msg 分享消息界面
│ ├── uni-im-sound 录音组件
│ └── uni-im-view-msg 用于浏览分享的历史聊天记录
├── license.md 源码使用许可协议
├── package.json 包管理文件
├── pages
│ ├── chat
│ │ ├── chat.nvue 聊天对话页
│ │ ├── chat-filtered.nvue 简版对话页面(搜索聊天记录时展示)
│ │ ├── cmp
│ │ │ ├── chat-fragment.nvue 渲染会话中一个片段的消息列表,用于显示某条消息搜索结果的上下文列表
│ │ │ └── simple-message.nvue
│ │ ├── emojiCodes.js emoji表情列表
│ │ └── info.nvue 对话详情(显示好友信息,可在此页面操作删除好友)
│ ├── common
│ │ ├── video 播放视频专用
│ │ └── view-code-page 全屏代码浏览
│ ├── contacts
│ │ ├── addPeopleGroups 查找并添加用户或群
│ │ ├── contacts.nvue 联系人页面
│ │ ├── createGroup 创建群聊
│ │ ├── groupList 我的群列表
│ │ └── notification 系统通知
│ ├── group
│ │ ├── groupQRCode.nvue 群二维码页面(未完成)
│ │ └── info.nvue 群信息页面(管理群)
│ ├── index 首页(展示会话列表)
│ └── userList 所有用户列表页(仅管理员账号可用)
├── sdk 核心库
│ ├── ext
│ │ ├── MsgManager.class.js 消息管理类库
│ │ ├── indexDB.js indexDB数据库
│ │ └── index.js
│ ├── index.js
│ ├── init 初始化相关
│ │ ├── EasyWebNotification.js
│ │ ├── checkVersion.js 版本检查
│ │ ├── clearData.js 清空数据
│ │ ├── getCloudMsg.js 获取掉线期间缺失的云端消息
│ │ ├── imData.js 初始化基本数据
│ │ ├── sqlite.js sqlite数据库
│ │ ├── msgEvent.js 消息事件
│ │ ├── onAppActivateStateChange.js 应用状态相关
│ │ ├── onNotification.js web-pc系统消息相关
│ │ ├── onSocketStateChange.js socket 连接状态相关
│ │ ├── onlyOneWebTab.js 限制web-pc端只能单选项卡打开本应用相关
│ │ └── index.js
│ ├── methods 封装的方法
│ │ ├── conversation
│ │ │ ├── Conversation.class.js 会话类
│ │ │ └── index.js
│ │ ├── extensions.js 扩展相关
│ │ ├── friend.js 好友
│ │ ├── group.js 群组
│ │ ├── users.js 用户
│ │ ├── msgTypes.js 消息类型
│ │ ├── notification.js 系统消息
│ │ └── index.js
│ ├── state
│ │ ├── data.js 响应式数据相关
│ │ └── index.js
│ └── utils
│ ├── appEvent.js 应用生命周期
│ ├── createObservable.js 创建响应式对象(支持nvue)
│ ├── highlight 代码高亮库
│ │ ├── github-dark.min.css
│ │ └── highlight-uni.min.js
│ ├── html-parser.js htmlString转化为nodes专用库
│ ├── index.js
│ ├── markdown-it.min.js markdown相关库
│ ├── md5.min.js md5哈希加密算法(用于本地直接生成会话id)
│ ├── shortcut-key.js web-pc快捷键相关
│ └── toFriendlyTime.js 时间戳转友好的时间表达
├── static 静态资源目录
└── uniCloud
├── cloudfunctions
│ ├── common
│ │ ├── uni-im-ext
│ │ │ ├── index.js
│ │ │ └── package.json
│ │ └── uni-im-utils
│ │ ├── index.js
│ │ ├── md5.js
│ │ ├── package-lock.json
│ │ └── package.json
│ └── uni-im-co
│ ├── conversation.js
│ ├── filtered-conversation.js
│ ├── friend.js
│ ├── group.js
│ ├── index.obj.js
│ ├── msg.js
│ ├── package-lock.json
│ ├── package.json
│ ├── push.js
│ └── uni-im-co.param.js
└── database
├── uni-id-users.schema.ext.js 用户表触发器
├── uni-im-conversation.schema.ext.js 聊天会话表触发器
├── uni-im-conversation.schema.json 聊天会话表的表结构
├── uni-im-friend-invite.schema.ext.js 邀请加为好友表触发器
├── uni-im-friend-invite.schema.json 邀请加为好友表表结构
├── uni-im-friend.schema.ext.js 好友关系表触发器
├── uni-im-friend.schema.json 好友关系表表结构
├── uni-im-group-join.schema.ext.js 申请加入群聊表触发器
├── uni-im-group-join.schema.json 申请加入群聊表表结构
├── uni-im-group-member.index.json 群成员表索引
├── uni-im-group-member.schema.ext.js 群成员表触发器
├── uni-im-group-member.schema.json 群成员表表结构
├── uni-im-group.schema.ext.js 群信息表触发器
├── uni-im-group.schema.json 群信息表表结构
├── uni-im-msg.schema.ext.js 聊天消息表触发器
├── uni-im-msg.schema.json 聊天消息表表结构
└── uni-im-notification.schema.json 推送消息记录表(仅记录系统消息)
├── changelog.md // 变更日志文件,记录版本更新内容
├── common
│ ├── baseStyle.scss // 基础样式文件,用于定义通用的样式规则
│ └── config.js // 配置文件,包含项目的各种配置参数
├── components
│ ├── uni-im-chat-input
│ │ ├── emojiCodes.js // emoji表情代码文件,存储表情相关的代码信息
│ │ └── uni-im-chat-input.vue // 对话界面输入框组件,用于用户输入聊天内容
│ ├── uni-im-choose-user // 用户选择组件,用于选择特定用户
│ ├── uni-im-contextmenu // 自定义右键菜单组件(web - pc专用),提供右键操作功能
│ ├── uni-im-conversation // 会话组件,展示单个会话信息
│ ├── uni-im-conversation-list // 会话列表组件,展示所有会话的列表
│ ├── uni-im-editor // 编辑器组件,用于编辑聊天内容相关功能
│ ├── uni-im-filtered-conversation-list // 过滤后的会话列表组件(搜索聊天记录时展示),显示符合搜索条件的会话
│ ├── uni-im-friendly-time // 友好时间显示组件,将时间戳转换为更易读的时间格式显示
│ ├── uni-im-group-notification // 群公告组件,用于展示群公告信息
│ ├── uni-im-icons
│ │ ├── uni-im-icons.ttf // 图标字体文件,提供项目中使用的图标字体
│ │ └── uni-im-icons.vue // 图标组件,使用图标字体来显示各种图标
│ ├── uni-im-img // 图片组件,用于显示聊天中的图片信息
│ ├── uni-im-info-card // 信息卡片组件,用于展示用户、群组等相关信息卡片
│ ├── uni-im-load-state // 加载状态提示组件,提示用户当前的加载状态
│ ├── uni-im-member-list // 成员列表组件,用于展示群成员
│ ├── uni-im-msg
│ │ ├── popup-control.vue // 弹出式消息操控组件(集成:撤回、复制、回复、转发、多选),提供对聊天消息的操作功能
│ │ ├── types
│ │ │ ├── code.vue // 代码类型消息组件,用于显示代码内容消息
│ │ │ ├── file.vue // 文件类型消息组件,用于显示文件相关消息
│ │ │ ├── history.vue // 历史类型消息组件(转发的聊天记录),用于显示转发的聊天记录信息
│ │ │ ├── image.vue // 图片类型消息组件,用于显示图片消息内容
│ │ │ ├── order.vue // 订单类型消息组件,用于显示订单相关消息(如果有此功能)
│ │ │ ├── rich-text.vue // 富文本类型消息组件,用于显示富文本内容消息
│ │ │ ├── sound.vue // 声音类型消息组件,用于显示声音相关消息
│ │ │ ├── system.vue // 系统类型消息组件,用于显示系统相关消息
│ │ │ ├── text.vue // 纯文本类型消息组件,用于显示纯文本内容消息
│ │ │ ├── userinfo-card.vue // 用户信息卡片类型消息组件,用于显示用户信息卡片消息
│ │ │ └── video.vue // 视频类型消息组件,用于显示视频相关消息
│ │ └── uni-im-msg.vue // 聊天消息组件,是聊天消息的基础组件
│ ├── uni-im-msg-list
│ │ ├── components
│ │ │ ├── filter-contorl // 过滤控制组件,用于控制消息列表的过滤功能
│ │ │ └── uni-im-list // 消息列表子组件,用于显示具体的消息列表内容
│ │ └── uni-im-msg-list.vue // 消息列表组件,用于显示聊天消息的列表
│ ├── uni-im-share-msg // 分享消息界面组件,用于展示分享的消息内容(当仅兼容web-pc端)
│ ├── uni-im-sound // 录音组件,用于录制声音消息
│ └── uni-im-view-msg // 用于浏览分享的历史聊天记录组件,方便用户查看分享的聊天历史
├── license.md // 源码使用许可协议文件,规定了代码的使用许可条款
├── package.json // 包管理文件,包含项目依赖的各种包信息以及项目的一些基本信息
├── pages
│ ├── chat
│ │ ├── chat-filtered.vue // 简版对话页面(搜索聊天记录时展示),用于在搜索聊天记录时显示简化的聊天界面
│ │ ├── chat.vue // 聊天对话页,用于正常的聊天交互界面
│ │ ├── components
│ │ │ └── chat-fragment.vue // 渲染会话中一个片段的消息列表,用于显示某条消息搜索结果的上下文列表组件,帮助用户查看搜索消息的上下文
│ │ └── info.vue // 对话详情页面(显示好友信息,可在此页面操作删除好友),展示聊天对象的详细信息并提供相关操作功能
│ ├── common
│ │ ├── video 播放视频专用组件,用于播放聊天中的视频内容
│ │ └── view-code-page // 全屏代码浏览页面,用于全屏查看代码类型的消息内容
│ ├── contacts
│ │ ├── addPeopleGroups // 查找并添加用户或群组件,用于添加新的用户或群组
│ │ ├── contacts.vue // 联系人页面组件,展示联系人列表
│ │ ├── createGroup // 创建群聊组件,用于创建新的群组
│ │ ├── groupList // 我的群列表组件,展示用户所在的群列表信息
│ │ └── notification
│ │ ├── action.js // 操作相关脚本文件,用于处理系统通知的相关操作逻辑
│ │ └── notification.vue // 系统通知组件,用于显示系统通知信息
│ ├── group
│ │ ├── info.vue // 群信息页面(管理群)组件,用于显示和管理群信息
│ │ ├── members.vue // 成员页面组件,用于展示群成员信息
│ │ └── qrCode.vue // 群二维码页面组件,用于显示群的二维码信息
│ ├── index
│ │ ├── index.scss // 首页样式文件,用于定义首页的样式规则
│ │ └── index.vue // 首页组件,展示会话列表等主要信息
│ └── userList 所有用户列表页组件(仅管理员账号可用),用于管理员查看所有用户信息
├── readme.md // 项目说明文件,用于介绍项目的功能、使用方法等信息
├── sdk
│ ├── ext
│ │ ├── CloudData.class.js // 云数据相关类文件,用于处理与云端数据相关的操作
│ │ ├── index.js // 扩展目录索引文件,用于组织和导出该目录下的模块
│ │ └── indexDB.js // indexDB数据库相关文件,用于操作indexDB数据库
│ ├── index.js // SDK索引文件,用于组织和导出SDK中的模块
│ ├── init
│ │ ├── EasyWebNotification.js // 简单网页通知相关脚本,用于在网页端实现简单的通知功能
│ │ ├── checkVersion.js // 版本检查脚本,用于检查项目的版本信息
│ │ ├── clearData.js // 清空数据脚本,用于清除项目中的相关数据
│ │ ├── getCloudMsg.js // 获取云端消息脚本,用于获取在掉线期间缺失的云端消息
│ │ ├── imData.js // 初始化基本数据脚本,用于初始化项目的基本数据
│ │ ├── index.js // 初始化目录索引文件,用于组织和导出该目录下的模块
│ │ ├── msgEvent.js // 消息事件脚本,用于处理消息相关的事件
│ │ ├── onAppActivateStateChange.js // 应用激活状态改变相关脚本,用于处理应用激活状态变化时的操作
│ │ ├── onNotification.js // 系统消息通知相关,用于处理各种通知相关的操作,包括:用户加群申请、加好友申请等
│ │ ├── onSocketStateChange.js // socket连接状态改变相关脚本,用于处理socket连接状态变化时的操作
│ │ ├── onlyOneWebTab.js // 限制web-pc端只能单选项卡打开本应用相关脚本,用于控制web-pc端的应用打开方式
│ │ └── sqlite.js // sqlite数据库相关脚本,用于操作sqlite数据库
│ ├── methods
│ │ ├── extensions.js // 扩展相关脚本,用于实现项目的扩展功能
│ │ ├── friend.js // 好友相关脚本,用于处理好友相关的操作
│ │ ├── index.js // 方法目录索引文件,用于组织和导出该目录下的模块
│ │ ├── msgTypes.js // 消息类型相关脚本,用于定义处理不同类型的消息
│ │ ├── notification.js // 系统消息相关脚本,用于处理系统消息相关的操作
│ │ └── users.js // 用户相关脚本,用于处理用户相关的操作
│ ├── state
│ │ ├── Conversation.class.js // 会话类定义文件,定义了会话相关的类和属性
│ │ ├── ConversationItem.class.js // 会话项类定义文件,用于表示会话列表中的单个会话项相关信息
│ │ ├── Friend.class.js // 好友类定义文件,定义了好友相关的类和属性
│ │ ├── Group.class.js // 群组类定义文件,定义了群组相关的类和属性
│ │ ├── GroupItem.class.js // 群组项类定义文件,用于表示群列表中的单个群组项相关信息
│ │ ├── GroupMember.class.js // 群成员类定义文件,定义了群成员相关的类和属性
│ │ ├── MsgItem.class.js // 消息项类定义文件,定义了消息相关的类和属性
│ │ ├── data.js // 数据相关脚本,用于存储和管理项目中的数据
│ │ ├── index.js // 状态目录索引文件,用于组织和导出该目录下的模块
│ │ └── msg.class.js // 消息类定义文件,定义了消息相关的类和属性
│ └── utils
│ ├── appEvent.js // 应用事件脚本,用于处理应用生命周期相关的事件
│ ├── createObservable.js // 创建响应式对象脚本,用于创建可观察的响应式对象
│ ├── highlight
│ │ ├── github-dark.min.scss // github深色主题样式文件,用于代码高亮显示的样式设置(是在特定主题下)
│ │ └── highlight-uni.min.js // 代码高亮相关脚本(适用于uni平台),用于实现代码高亮功能
│ ├── html-parser.js // html字符串转化为节点专用库脚本,用于将html字符串解析为节点结构
│ ├── index.js // 工具目录索引文件,用于组织和导出该目录下的模块
│ ├── markdown-it.min.js // markdown相关脚本库,用于处理markdown格式的文本
│ ├── md5.min.js // md5哈希加密算法脚本(用于本地直接生成会话id),用于生成md5哈希值
│ ├── shortcut-key.js // web-pc快捷键相关脚本,用于处理快捷键操作
│ └── toFriendlyTime.js // 时间戳转友好的时间表达脚本,用于将时间戳转换为更易读的时间格式
└── uniCloud
├── cloudfunctions
│ ├── common
│ │ ├── uni-im-ext
│ │ │ ├── index.js // uni-im扩展相关的云函数索引文件,用于组织和导出该目录下的云函数模块
│ │ │ └── package.json // uni-im扩展相关的包管理文件,包含该部分的依赖信息等
│ │ └── uni-im-utils
│ │ ├── SymmetricEncryption.class.js // 对称加密相关类文件,用于实现对称加密功能
│ │ ├── index.js // uni-im工具相关的云函数索引文件,用于组织和导出该目录下的云函数模块
│ │ └── package.json // uni-im工具相关的包管理文件,包含该部分的依赖信息等
│ └── uni-im-co
│ ├── conversation.js // 会话相关的云函数文件,用于处理会话相关的云操作
│ ├── filtered-conversation.js // 过滤后的会话相关的云函数文件(用于搜索聊天记录相关云操作)
│ ├── friend.js // 好友相关的云函数文件,用于处理好友相关的云操作
│ ├── group.js // 群组相关的云函数文件,用于处理群组相关的云操作
│ ├── index.obj.js // 运函数入口文件
│ ├── msg.js // 消息相关的云函数文件,用于处理消息相关的云操作
│ ├── package.json // 包管理文件,包含该部分的依赖信息等
│ ├── push.js // 推送相关的云函数文件,用于处理推送相关的云操作
│ └── tools.js // 工具相关的云函数文件,提供一些通用的云函数工具功能
└── database
</code>
</pre>
名词解释
...
...
@@ -467,11 +473,11 @@ API列表
### 获取会话列表 getConversationList@coGetConversationList
**参数说明**
|参数名
|类型 |必填 |说明
|
|--
|-- |-- |--
|
|limit
|number |否 |数量,默认值:500
|
|max
UpdateTime|number |否 |最大更新
时间(实现高性能分页) |
|page
|number |是 |页码
|
|参数名
|类型 |必填 |说明
|
|--
|-- |-- |--
|
|limit
|number |否 |数量,默认值:500
|
|max
LastMsgCreateTime |number |否 |最大的会话的最后一条消息的创建
时间(实现高性能分页) |
|page
|number |是 |页码
|
**返回值**
...
...
@@ -515,7 +521,7 @@ await uniImCo.sendMsg({
```
### 向群用户递归推送消息 sendMsgToGroup@coSendMsgToGroup
注意:这是一个递归云对象,500个设备为一组批量向用户推送消息(该方法仅
支持云对象的方法,
或者触发器调用)
注意:这是一个递归云对象,500个设备为一组批量向用户推送消息(该方法仅
允许云对象
或者触发器调用)
|参数名 |类型 |必填 |说明 |
|-- |-- |-- |-- |
...
...
@@ -594,31 +600,17 @@ await uniImCo.sendMsg({
## 客户端sdk@clientSkd
入口文件路径:
`@/uni_modules/uni-im/sdk/index.js`
uni-im2.0 废弃了1.0通过Vuex的状态管理方式,不再需要关心vuex的用法,直接当做一个全局的响应式js变量即可。
### state
|名称 |类型 |说明 |
|-- |-- |-- |
|isDisabled |boolean |是否禁用(当同一个浏览器,多个页签打开引起的占线时使用)|
|conversation |object |会话对象 |
|
|
-
dataList|array |会话数据列表 |
|
|
-
hasMore |boolean |是否还有更多会话数据 |
|
|
-
loading |boolean |是否正在加载中 |
|currentConversationId |string |正在对话的会话id |
|heartbeat |timestamp |心跳(精确到秒)详情:
[
心跳概念说明
](
#heartbeat-explain
)
|
|friend |object |好友对象 |
|
|
-
dataList|array |好友数据列表 |
|
|
-
hasMore |boolean |是否还有更多好友数据 |
|group |object |聊天群对象 |
|
|
-
dataList|array |聊天群数据列表 |
|
|
-
hasMore |boolean |是否还有更多群聊数据 |
|notification |object |系统通知对象 |
|
|
-
dataList|array |系统通知数据列表 |
|
|
-
hasMore |boolean |是否还有更多系统通知数据 |
|users |object |存储所有出现过的用户信息,包括群好友信息 |
|isWidescreen |boolean |是否为pc宽屏 |
|isTouchable |boolean |是否为触摸屏 |
...
...
@@ -628,34 +620,33 @@ uni-im2.0 废弃了1.0通过Vuex的状态管理方式,不再需要关心vuex
|dataBaseIsOpen |boolean |判断本地sqlite数据库是否已经打开(仅app端有用) |
|socketIsClose |boolean |记录socket是否关闭 |
其中
`conversation,msg,friend,group,notification`
继承类
`/uni_modules/uni-im/sdk/ext/CloudData.class.js`
类,均拥有:
-
属性
|名称 |作用 |
|:--: |:--: |
|dataList |数据列表 |
|hasMore |表示是否有更多数据 |
|loading |表示加载状态 |
|loadLimit|分页加载时的单页记录数 |
-
方法
|名称 |作用 |
|:--: |:--: |
|reset |重置数据 |
|remove |移除数据 |
|find |查找本地数据(不联网,确保本地存在时使用;一般用于挂在计算属性上) |
|get |获取数据 (根据条件联网查找) |
|getMore |获取数据(下一页数据) |
|loadMore |加载更多数据(获取下一页数据,并添加到dataList) |
|set |设置数据 |
|add |添加数据 |
|update |更新数据 |
### 心跳概念说明heartbeat@heartbeat-explain
uni-im的会话列表和消息列表,需要显示实时的发生时间。而一个应用开启太多的定时器,会消耗较大的系统性能。
所以uni-im提供了一个每秒钟更新一次的响应式数据
`heartbeat`
,由uniImInit方法:启用一个定时器刷新,挂载在全局,所有应用场景引用这一个变量即可
#### methods
|名称 |说明 |
|-- |-- |
|conversation |会话对象 |
|
|
-
get |这是一个异步方法,用于获取会话数据(默认先查本地会话,本地没有则请求云端拉取) |
|
|
-
getCached |这是一个同步方法,同步获取已经缓存在本地的会话信息,适用于在能够确定会话信息已经拉到本地的上下文中调用。常用于计算属性内 |
|
|
-
loadMore |加载更多会话数据 |
|
|
-
unreadCount |统计“本地会话列表”的所有消息的未读数 |
|
|
-
clearUnreadCount|清空所有会话的未读消息数 |
|notification |系统消息 |
|
|
-
get |获取系统消息 |
|
|
-
loadMore |加载更多系统消息 |
|
|
-
unreadCount |统计未读数 |
|friend |好友列表 |
|
|
-
get |获取好友数据 |
|
|
-
loadMore |加载更多系统消息 |
|group |群列表 |
|
|
-
get |获取群聊数据 |
|
|
-
loadMore |加载更多群聊数据 |
|mergeUsersInfo |添加用户信息到本地用户信息库 |
|clearUnreadCount |设置某个会话的未读消息数为已读 |
使用示例:
```
js
...
...
@@ -689,7 +680,7 @@ let param = {"group_id":"xxx"}
let
conversationList
=
await
uniIm
.
conversation
.
get
(
param
)
```
5.
隐藏会话
5.
移除/隐藏会话(软删除,有新消息后自动恢复)
```
js
let
conversation
=
await
uniIm
.
conversation
.
get
(
param
)
await
conversation
.
hide
()
...
...
@@ -697,10 +688,9 @@ await conversation.hide()
-
加载会话数据
1.
加载更多会话数据(
分页加载,新数据的会话更新时间,小于列表中最小的会话更新时间
)
1.
加载更多会话数据(
默认根据会话最后一条消息排序
)
```
js
let
param
=
null
let
conversationList
=
await
uniIm
.
conversation
.
loadMore
(
param
)
await
uniIm
.
conversation
.
loadMore
()
```
2.
加载指定会话id的会话数据
...
...
@@ -784,18 +774,12 @@ await uniIm.friend.loadMore()
let
param
=
{
"
friend_uid
"
:
"
xxx
"
}
await
uniIm
.
friend
.
loadMore
(
param
)
```
-
删除好友数据
```
js
let
param
=
{
"
friend_uid
"
:
"
xxx
"
}
await
uniIm
.
friend
.
remove
(
param
)
```
-
获取群聊数据
-
获取群列表数据
```
js
await
uniIm
.
group
.
get
()
```
-
加载更多群
聊
数据
-
加载更多群数据
1.
分页加载
```
js
await
uniIm
.
group
.
loadMore
()
...
...
@@ -805,11 +789,6 @@ await uniIm.group.loadMore()
let
param
=
{
"
group_id
"
:
"
xxx
"
}
await
uniIm
.
group
.
loadMore
(
param
)
```
-
删除群聊数据
```
js
let
param
=
{
"
group_id
"
:
"
xxx
"
}
await
uniIm
.
group
.
remove
(
param
)
```
-
添加用户信息到本地用户信息库
```
js
...
...
@@ -830,7 +809,7 @@ utils封装了uni-im常用方法的模块,路径:`/uni_modules/uni-im/sdk/ut
1.
获取单聊会话id
```
js
let
friend_uid
=
"
xxx
"
uniIm
.
getConversationId
(
friend_uid
,
'
single
'
)
uniIm
.
utils
.
getConversationId
(
friend_uid
,
'
single
'
)
```
2.
获取群聊会话id
```
js
...
...
@@ -842,7 +821,6 @@ uniIm.getConversationId(group_id,'group')
-
[
V2.0.14,V2.0.13
](
https://ext.dcloud.net.cn/plugin?id=9711&update_log
)
更新解决了:uni-id-users表的触发器
`uni-id-users.schema.ext.js`
的兼容性问题。
这个问题可能会和你的项目产生冲突,请升级或者下载最新版的uni-im复制
`uni_modules/uni-im/unicloud/database/uni-id-users.schema.ext.js`
文件复制到你的项目中以覆盖原文件。
## 项目升级
uni-im遵循uni-app的插件模块化规范,即:
[
uni_modules
](
https://uniapp.dcloud.io/uni_modules
)
。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录