提交 98f3e72a 编写于 作者: DCloud_JSON's avatar DCloud_JSON

Update uni-im.md

上级 ee2f1886
**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 |
|maxUpdateTime|number |否 |最大更新时间(实现高性能分页) |
|page |number |是 |页码 |
|参数名 |类型 |必填 |说明 |
|-- |-- |-- |-- |
|limit |number |否 |数量,默认值:500 |
|maxLastMsgCreateTime |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 |会话对象 |
|&nbsp;&#124;-&nbsp;dataList|array |会话数据列表 |
|&nbsp;&#124;-&nbsp;hasMore |boolean |是否还有更多会话数据 |
|&nbsp;&#124;-&nbsp;loading |boolean |是否正在加载中 |
|currentConversationId |string |正在对话的会话id |
|heartbeat |timestamp |心跳(精确到秒)详情:[心跳概念说明](#heartbeat-explain) |
|friend |object |好友对象 |
|&nbsp;&#124;-&nbsp;dataList|array |好友数据列表 |
|&nbsp;&#124;-&nbsp;hasMore |boolean |是否还有更多好友数据 |
|group |object |聊天群对象 |
|&nbsp;&#124;-&nbsp;dataList|array |聊天群数据列表 |
|&nbsp;&#124;-&nbsp;hasMore |boolean |是否还有更多群聊数据 |
|notification |object |系统通知对象 |
|&nbsp;&#124;-&nbsp;dataList|array |系统通知数据列表 |
|&nbsp;&#124;-&nbsp;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 |会话对象 |
|&nbsp;&#124;-&nbsp;get |这是一个异步方法,用于获取会话数据(默认先查本地会话,本地没有则请求云端拉取) |
|&nbsp;&#124;-&nbsp;getCached |这是一个同步方法,同步获取已经缓存在本地的会话信息,适用于在能够确定会话信息已经拉到本地的上下文中调用。常用于计算属性内 |
|&nbsp;&#124;-&nbsp;loadMore |加载更多会话数据 |
|&nbsp;&#124;-&nbsp;unreadCount |统计“本地会话列表”的所有消息的未读数 |
|&nbsp;&#124;-&nbsp;clearUnreadCount|清空所有会话的未读消息数 |
|notification |系统消息 |
|&nbsp;&#124;-&nbsp;get |获取系统消息 |
|&nbsp;&#124;-&nbsp;loadMore |加载更多系统消息 |
|&nbsp;&#124;-&nbsp;unreadCount |统计未读数 |
|friend |好友列表 |
|&nbsp;&#124;-&nbsp;get |获取好友数据 |
|&nbsp;&#124;-&nbsp;loadMore |加载更多系统消息 |
|group |群列表 |
|&nbsp;&#124;-&nbsp;get |获取群聊数据 |
|&nbsp;&#124;-&nbsp;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.
先完成此消息的编辑!
想要评论请 注册