提交 733cfd81 编写于 作者: hbcui1984's avatar hbcui1984

Merge branch 'master' of https://github.com/dcloudio/unidocs-zh

......@@ -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) -->
......
> 需要HBuilderX 3.5.1 及其以上版本支持
<div style="display: flex;align-items: center;">
<img width="20px" height="21px" src="https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/759713d0-4f2d-11eb-a16f-5b3e54966275.png">
&nbsp;
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=EErVqoKDps4QSo5M0mm_OfzdA7JqtQU4&jump_from=webapi">uni-push2.0 官方QQ交流群:757742921</a>
</div>
# 开发文档
`uni-push`有服务器API和客户端API。
......
## 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
......@@ -3,7 +3,7 @@
<div style="display: flex;align-items: center;">
<img width="20px" height="21px" src="https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/759713d0-4f2d-11eb-a16f-5b3e54966275.png">
&nbsp;
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=EErVqoKDps4QSo5M0mm_OfzdA7JqtQU4&jump_from=webapi">官方QQ交流群:757742921</a>
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=EErVqoKDps4QSo5M0mm_OfzdA7JqtQU4&jump_from=webapi">uni-push2.0 官方QQ交流群:757742921</a>
</div>
# 应用场景
......@@ -282,7 +282,7 @@ exports.main = async (event, context) => {
如果项目使用[uni-id-pages](https://ext.dcloud.net.cn/plugin?id=8577),即可直接指定基于uni-id的user_id、user_tag,并可筛选设备的平台、登录信息是否有效等,执行推送消息。
uni-id-pages已经内置:在登录账号、退出账号、切换账号、token续期、注销账号5个时机,管理uni-id-device表、opendb-device表与user_id、push_clientid、platform、os_name等字段的映射关系。
uni-id-pages已经内置:在登录账号、退出账号、切换账号、token续期、注销账号5个时机,管理uni-id-device表、opendb-device表与user_id、push_clientid、platform、os_name等字段的映射关系。[详情参考](/uniCloud/uni-cloud-push/mate)
此外uni-push2.0 还提供了uni-admin中的web控制台[uni-push-admin](https://ext.dcloud.net.cn/plugin?name=uni-push-admin)。如图,包含消息推送、推送统计等功能的,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册