Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
63db5347
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
63db5347
编写于
7月 12, 2022
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增uni-push-mate文档
上级
8705109e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
0 deletion
+33
-0
docs/uniCloud/_sidebar.md
docs/uniCloud/_sidebar.md
+1
-0
docs/uniCloud/uni-cloud-push/mate.md
docs/uniCloud/uni-cloud-push/mate.md
+32
-0
未找到文件。
docs/uniCloud/_sidebar.md
浏览文件 @
63db5347
...
...
@@ -52,6 +52,7 @@
*
Push扩展库(socket)
*
[
业务文档
](
unipush-v2.md
)
*
[
开发文档
](
uniCloud/uni-cloud-push/api.md
)
*
[
uni-push2.0、uni-id、uni统计的组合
](
uniCloud/uni-cloud-push/mate.md
)
*
[
扩展参数
](
uniCloud/uni-cloud-push/options.md
)
*
[
运行与调试
](
uniCloud/rundebug.md
)
<!-- * [日志输出](uniCloud/cf-logger.md) -->
...
...
docs/uniCloud/uni-cloud-push/mate.md
0 → 100644
浏览文件 @
63db5347
## uni-push2.0、uni-id、uni统计的组合说明
### 包含的opendb表
|数据表名称 |操作(添加/更新)时机 |内容/作用 |
|-- | |-- |
|opendb-tempdata|旧token过期时 |向个推服务器发起请求的token |
|open-device |设备启动、登录 |push_clientid与详细的
[
设备信息
](
#deviceInfo
)
|
|uni-id-device |登录 |主要用于存储user_id 与 device_id的映射关系,完整字段:user_id、device_id、token_expired、push_clientid、appid|
**详情:**
1.
uni统计模块,在设备启动时立即调用
[
getPushClientId
](
https://uniapp.dcloud.io/uniCloud/uni-cloud-push/api.html#getpushclientid
)
获取
`push_clientid`
,如果获取成功后(应用未在manifest中启用uni-push2.0则会获取失败)则调用
`uni-stat-receiver`
云对象的
`report`
方法(参数:
`push_clientid`
),服务器会向
`opendb-device`
表写入或更新(存在时):
[
设备信息
](
#deviceInfo
)
和
`push_clientid`
。
2.
uni-id-pages插件,调用
[
uniCloud.onRefreshToken
](
https://uniapp.dcloud.io/uniCloud/client-sdk.html#on-refresh-token
)
监听token发生变化(即:用户登录和token续期时),调用
`uni-id-co`
云对象的
`setPushCid`
方法(参数:
`push_clientid`
)服务器操作
`uni-id-device`
表,记录
`device_id`
与
`user_id`
的映射关系;完整字段包含
`user_id`
、
`device_id`
、
`token_expired`
、
`push_clientid`
、
`appid`
。同时再向
`opendb-device`
表写入或更新(存在时):
[
设备信息
](
#deviceInfo
)
和
`push_clientid`
。
综上:
`push_clientid`
被存储在
`uni-id-device`
和
`opendb-device`
两个表,前者用于存储
`device_id`
与
`user_id`
的映射关系,仅用户登录成功后才有对应数据;后者用于存储完整的
[
设备信息
](
#deviceInfo
)
,未登录的用户也有对应的数据。
**注意:**
当用户未登录时,我们可以基于
`device_id`
向用户推送消息,但有被窃听的风险(营销类消息不用太关心这个)。因为
`opendb-device`
表中存储的
[
设备信息
](
#deviceInfo
)
,底层的技术原理是获取客户端自动上报的信息,理论上存在被篡改可能。如:张三使用李四的
`device_id`
+张三的
`push_clientid`
。上报数据;服务器会认为李四的
`push_clientid`
更新了,从而将李四的
`device_id`
与
`push_clientid`
的映射关系,指向张三的
`push_clientid`
;张三从而窃听到,其他人发给李四的消息。
而基于
`user_id`
或者
`user_tag`
推送消息,是基于
`uni-id-device`
表,在新增/更新操作时:会校验当前用户的
`user_id`
,不会被其他用户篡改,即没有被他人窃听消息的风险。
#### 设备信息@deviceInfo
来源uniCloud云对象中的
[
this.getClientInfo
](
https://uniapp.dcloud.io/uniCloud/cloud-obj.html#get-client-info
)
方法,完整字段列表参考:
[
uni.getSystemInfo
](
https://uniapp.dcloud.net.cn/api/system/info.html#getsysteminfo
)
### 推送接口查库详解:
<img
style=
"width:80%;max-width:450px;margin:0 10%"
src=
"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/54b808b4-4a98-4316-86a1-4db914a48961.jpg"
>
-
推送目标依据为:
`push_clientid`
直接执行推送。
-
推送目标依据为:
`device_id`
,查
`opendb-device`
表,获得
`push_clientid`
执行推送
-
推送目标依据为:
`users_id`
查
`uni-id-device`
表(如果需要验证platform就联查
`opendb-device`
表),获得
`push_clientid`
执行推送
-
推送目标依据为:
`user_tag`
查
`uni-id-users`
表,获得
`users_id`
查
`uni-id-device`
表(如果需要验证platform就联查
`opendb-device`
表),获得
`push_clientid`
执行推送
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录