提交 0ae18530 编写于 作者: DCloud_JSON's avatar DCloud_JSON

Update uni-im.md

上级 f78a6939
......@@ -12,14 +12,14 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统
案例:
<img width="600px" src="https://qiniu-web-assets.dcloud.net.cn/ext/uni-im/20230228110007.jpg"></img>
<img width="600px" src="https://qiniu-web-assets.dcloud.net.cn/ext/uni-im/20230228110007.jpg">
如图:在插件市场任意插件详情页面,点击咨询作者按钮,即可看到基于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)
- 中心化响应式数据管理,切换会话无需重新加载数据,更流畅的体验
......@@ -62,7 +62,7 @@ uni-im本身并不收费,实际使用中需要依赖uniCloud云服务,会产
# 快速部署体验
## 前提条件
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)服务器)内。
传统的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)
## 体验步骤
......@@ -161,11 +161,12 @@ export default defineConfig({
uni-im的服务端代码托管在uniCloud下,账户体系是[uni-id 4.0+](https://uniapp.dcloud.net.cn/uniCloud/uni-id/summary.html)的;
uni-app生态下绝大部分项目的架构与uni-im相同,所以不需要考虑账号打通问题,用户登录项目后,不需要额外登录uni-im。
而有些传统项目,服务端的开发语言是php、java、go、.net、python、c#等,是自己设计的账号体系;用户登录所获得的token,与uni-im所需的token不是同一个账号体系;需要在传统服务器端,通过[uni-id的外部系统联登](./uni-id/cloud-object.md#external)同步你项目的账号数据到uni-im用户体系并获得uni-id的token,客户端再调用uniImUtils的login方法登录uni-im;示例代码如下:
而有些传统项目,服务端的开发语言是php、java、go、.net、python、c#等,是自己设计的账号体系;
用户登录所获得的token,与uni-im所需的token不是同一个账号体系;
需要在传统服务器端,通过[uni-id的外部系统联登](./uni-id/cloud-object.md#external)同步你项目的账号数据到uni-im用户体系并获得uni-id的token,按如下示例代码完成登录。
```js
import uniImUtils from '@/uni_modules/uni-im/common/utils.js';
import {mutations as uniIdMutations} from '@/uni_modules/uni-id-pages/common/store.js';
uni.request({
url: 'https://www.example.com/login', //仅为示例,并非真实接口地址。
data: {
......@@ -176,9 +177,31 @@ export default defineConfig({
console.log(res.data);
// 得到你自己项目的token和uni-id的token
let {token,uniIdToken} = res.data
// 存储你自己项目的token到storage(仅供参考,根据你自己的登录逻辑而定)
uni.setStorageSync('token',token)
// 【请注意】这里的`uniIdToken` 是一个`对象`:包含:`token`和`tokenExpired`
await uniImUtils.login(uniIdToken)
// 存储uni-id的token和token过期时间到storage(必须按以下格式存储)
uni.setStorageSync('uni_id_token_expired',uniIdToken.tokenExpired)
uni.setStorageSync('uni_id_token',uniIdToken.token)
// 获取push的ClientId同步到uni-id
uni.getPushClientId({
success: async function(e) {
// console.log(e)
let pushClientId = e.cid
// console.log(pushClientId);
let res = await uniIdCo.setPushCid({
pushClientId
})
// console.log('getPushClientId', res);
},
fail(e) {
console.log(e)
}
})
// 更新本地用户信息
await uniIdMutations.updateUserInfo()
// 通知其他模块登录成功
uni.$emit('uni-id-pages-login-success')
}
});
......@@ -565,7 +588,7 @@ await uniImCo.sendMsg({
|0 |不限制 |
|100|仅限当前用户向:客服、好友、群成员发起会话 |
|200|仅限当前用户向:好友或群成员发起会话 |
|300|限制向系统管理员或群管理员发起会话|
|300|限制向:系统管理员 或 群管理员 或 好友 发起会话|
## 客户端sdk@clientSkd
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册