Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suncj1314
unidocs-zh
提交
9532aacf
U
unidocs-zh
项目概览
suncj1314
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
9532aacf
编写于
5月 25, 2022
作者:
DCloud_Heavensoft
提交者:
Gitee
5月 25, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs/uniCloud/uni-push.md.
上级
604cae12
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
37 deletion
+61
-37
docs/uniCloud/uni-push.md
docs/uniCloud/uni-push.md
+61
-37
未找到文件。
docs/uniCloud/uni-push.md
浏览文件 @
9532aacf
>本文为uni
P
ush2.0的介绍,如果旧项目需要使用老版本的uniPush1.0详情:[https://ask.dcloud.net.cn/article/35622](https://ask.dcloud.net.cn/article/35622)
>本文为uni
-p
ush2.0的介绍,如果旧项目需要使用老版本的uniPush1.0详情:[https://ask.dcloud.net.cn/article/35622](https://ask.dcloud.net.cn/article/35622)
# 简介
## 概述
`uni
P
ush`
是DCloud联合个推公司推出的、全端的、云端一体的统一推送服务。
`uni
-p
ush`
是DCloud联合个推公司推出的、全端的、云端一体的统一推送服务。
1.
在客户端平台方面,不但支持App端、小程序端、web端,App端还内建了苹果、华为、小米、OPPO、VIVO、魅族、谷歌FCM等手机厂商的系统推送和个推第三方推送。(uniPush 2.0起
支持小程序端、web端以及App端的在线推送)
2.
在服务端,uniPush2.0起支持uniCloud云端一体,无需再编写复杂的服务端调用代码发送push。而uniPush1.0支持使用传统服务器开发语言比如php来发送服务端消息,流程比uniP
ush2.0繁琐。
3.
uni
Push还自带一个web控制台。不写代码也可以在web页面发推送。uniPush1.0的web控制台在
[
dev.dcloud.net.cn
](
https://dev.dcloud.net.cn
)
。uniPush2.0的web控制台是开源的,内置在uni-admin插件中
。
1.
客户端方面,
`uni-push`
支持App、web、小程序。App端还内建了苹果、华为、小米、OPPO、VIVO、魅族、谷歌FCM等手机厂商的系统推送和个推第三方推送。(uni-push 1.0不
支持小程序端、web端以及App端的在线推送)
2.
服务端方面,uni-push2.0起支持uniCloud云端一体,无需再编写复杂代码轻松完成push。而uni-push1.0支持使用传统服务器开发语言如php,未和客户端有效协同,流程比uni-p
ush2.0繁琐。
3.
uni
-push还自带一个web控制台。不写代码也可以在web页面发推送。uni-push1.0的web控制台在
[
dev.dcloud.net.cn
](
https://dev.dcloud.net.cn
)
。uni-push2.0的web控制台是开源的,属于uni-admin插件
。
## 什么是uniPush?
push是一种支持服务端主动向客户端发送即时消息,由服务端、手机系统推送服务模块、客户端,三者之间建立长连接的通讯架构。即使应用不联网(用户关闭应用,或者手机厂商为了省电或释放内存,会终止App后台联网)消息也可以通过不会离线的手机厂商通道,下发到手机系统推送服务模块;以系统消息的方式通知用户,用户点击通知栏消息即可重新唤醒APP。实现更高的消息的送达率,以及应用拉活的目的。
<img
width=
"100%"
src=
"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/1b3b17d1-d6fb-4d26-96d4-c0dbc4300aad.png"
/></br>
如图所示:应用联网时,客户端直接收到push在线消息;应用不联网时push消息将以通知栏消息的方式展示,用户点击通知栏消息后,客户端才能收到离线消息。
## 什么是push?
push,指服务器主动向客户端发送消息。无需客户端持续轮询服务器,那样即需要客户端持续在线、耗电,又加重服务器负载。
手机的通知栏、小程序的订阅消息、web浏览器的webnotification都是一种push。
当客户端在线时,push通过socket协议实现。当客户端离线时,服务器找不到客户端,开发者无法自己实现推送,只能依托手机操作系统、浏览器以及小程序底层提供的离线消息推送,调用指定的API或SDK来发送消息。
然而消息下发到手机系统推送服务模块,是通过集成的手机厂商sdk实现。而每个厂商规范不同,比较流行的厂商有:苹果、华为、小米、vivo、oppo、魅族,这6大手机厂家。那程序员得写6种代码,分别去给这6家标准不同的厂家推送消息?这么多平台,工作量会非常巨大,管理维护也很麻烦。显然这样太繁琐了
。
所以一个push系统由3部分组成:业务服务器 + 专业push服务器 + 客户端
。
uniPush因此而生,它内部封装了繁琐的逻辑。开发者只需要通过
`uniPush`
,系统会自动在不同手机上选择最可靠的推送通道发送push消息,保障送达率
。
业务服务器向专业push服务器发送指令,告知需要向哪些客户端发送什么样的消息;然后专业push服务器检测客户端是否在线,在线则走socket通道下发消息,客户端代码可以直接响应处理,离线则通过平台专用服务发送通知栏消息,用户在平台提供的通知栏中看到push消息,点击后呼起客户端应用,客户端代码才能接收响应
。
uniPush即降低了开发成本、又提高了push送达率,并且免费,是当前推送的最佳解决方案。
在App平台,push很常见,但问题也最多。手机厂商众多,他们各自都有不同的推送服务,包括Apple、google(仅能在海外使用)、华为、小米、oppo、vivo、魅族,以及还有一些没有专业推送服务的中小手机品牌。他们对App后台耗电都有查杀机制,除了微信等大应用,普通应用很难常驻后台。
如果开发者把上述每个平台的客户端和服务器的SDK都对接一遍,还自己处理没有push服务的中小品牌手机,那过于困难了。所以业内有专业的推送服务厂商,如个推(属于上市公司每日互动),而DCloud与个推深度合作,为uni-app的开发者提供了比传统方案便利甚多的统一推送方案
`uni-push`
。
如下图所示:应用启动并联网时,客户端直接收到push在线消息;应用不联网时push消息将以通知栏消息的方式展示,用户点击通知栏消息后,客户端才能收到离线消息。
<img
width=
"100%"
src=
"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/1b3b17d1-d6fb-4d26-96d4-c0dbc4300aad.png"
/></br>
除了提供App推送,
`uni-push`
还面向web和小程序提供了在线push,它其实是一个免费的socket服务器。尤其对于uniCloud用户来说,补齐了众多重要场景。
`uni-push`
即降低了开发成本,又提高了push送达率,还支持全平台,并且免费,是当前推送的最佳解决方案。
# 应用场景
-
系统消息通知
</br>
...
...
@@ -31,24 +42,27 @@ uniPush即降低了开发成本、又提高了push送达率,并且免费,是
-
活动营销
</br>
在日常营销推广、促销活动等场景下(如双11、618大促、会员促销、游戏活动、产品推送活动等),APP可对目标用户进行定向通知栏消息+应用内消息推送,吸引用户参与活动,提升转化。
还有聊天功能、棋牌游戏等,需要客户端被动接收消息的需求的功能都可以用uni
P
ush实现。
还有聊天功能、棋牌游戏等,需要客户端被动接收消息的需求的功能都可以用uni
-p
ush实现。
**局限性说明:**
uniPush客户端接收消息的通讯协议属于websocket;服务端调用消息下发用的是http通讯协议。需要超低延迟的应用场景,如:远程画板、像王者荣耀那样的游戏就不适用。
# 常见问题
有了uniPush,开发者不应该再使用其他push方案了。但我们发现很多开发者有误解,导致还在错误使用其他推送。
有了uni-push,开发者不应该再使用其他push方案了。但我们发现很多开发者有误解,导致还在错误使用其他推送。
-
常见误解1:“uni-push的专业性,和专业的个推、极光等服务可相比吗?”
-
常见误解1:“uniPush的专业性,和专业的个推、极光等服务可相比吗?”
答:uni-push是由个推将其本来收费的(vip套餐) push产品,免费提供给了DCloud的开发者。它与个推vip push的只有2个区别:1、免费;2、账户使用的是DCloud开发者账户,而无需再重新注册个推账户。个推是A股上市公司,专业性在推送领域领先。
答:uniPush是由个推将其本来收费的(vip套餐) push产品,免费提供给了DCloud的开发者。它与个推vip push的只有2个区别:1、免费;2、账户使用的是DCloud开发者账户,而无需再重新注册个推账户。个推是A股上市公司,专业性在推送领域领先。
-
常见误解2:“uni-push好麻烦,我就喜欢个推、极光这种简单sdk,不想去各个rom厂商去申请一圈”
-
常见误解2:“uniPush好麻烦,我就喜欢个推、极光这种简单sdk,不想去各个rom厂商去申请一圈”
答:uni-push不建立在申请手机厂商授权的基础上,如果你不申请那些,使用起来和用普通的push是一样的。但是要特别注意,推送行业的现状就是:不集成rom厂商的推送,就无法在App离线时发送push。按照普通push模式使用,后果就是在华为、小米、OPPO、VIVO、魅族上发不了离线消息。
答:uniPush不建立在申请手机厂商授权的基础上,如果你不申请那些,使用起来和用普通的push是一样的。但是要特别注意,推送行业的现状就是:不集成rom厂商的推送,就无法在App离线时发送push。。按照普通push模式使用,后果就是在华为、小米、OPPO、VIVO、魅族上发不了离线消息。
-
常见误解3:“uni-push的送达率高吗?是否可以付费来提升送达率,个推是有付费提升送达率的方法的”
-
常见误解3:“uniPush的送达率高吗?是否可以付费来提升送达率,个推是有付费提升送达率的方法的”
答:前文已经说了。个推的付费提升送达率的产品就是vip push,而uni-push就是个推的vip Push。DCloud通过谈判免费给DCloud的开发者使用了。
答:前文已经说了。个推的付费提升送达率的产品就是vip push,而uniPush就是个推的vip Push。DCloud通过谈判免费给DCloud的开发者使用了。
-
uni-push可以完整替代socket吗?
答:能部分替代。uni-push客户端接收消息的通讯协议属于websocket;但服务端调用消息下发用的是http通讯协议,会有1-2秒的延时。需要超低延迟的应用场景,如多人交互远程画板不合适。但对于普通的im消息、聊天、通知都没有问题。
# 开通和配置指南
## 产品入口
...
...
@@ -68,25 +82,30 @@ uniPush即降低了开发成本、又提高了push送达率,并且免费,是
![](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/637abb41-4702-4b05-928b-8aac6de7149f.jpg
)
## 第一步:开通 uniPush
### 实名认证
用户首次使用 uniPush 功能时,需要向个推同步身份信息。
-
已通过实名认证的用户,会直接将实名认证信息同步给个推。如下图所示:
**疑问:个推需要实名认证?不是吧,他只需要手机号,不需要真实姓名更不需要身份证**
### 手机号验证
按照国家法律要求,所有提供云服务的公司在用户使用云服务时都需要验证手机号。
用户初次开通 uni-push 时,需要向个推同步手机号信息。
![](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/a0e85961-e5e7-4e38-a6d0-aea6ab27766e.jpg
)
-
未提交实名认证信息的用户,需要在页面中输入相关信息后提交,如下图所示:
![](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/33a935da-7392-4f5b-9f90-8f7d7adae061.jpg
)
### 填写应用信息
应用开通 uni
P
ush 功能时,需要提交应用相关信息,如下图所示:
应用开通 uni
-p
ush 功能时,需要提交应用相关信息,如下图所示:
![](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/381bd60a-a38b-412a-8bfb-6cafb9788a6a.jpg
)
关联服务空间说明:UniPush2.0为了开发者更方便地,触发消息推送。推出
`uni-cloud-push`
(uniCloud扩展库)。通过扩展库在uniCloud云函数中,直接调用相关API,无需额外的服务端配置,即可直接调用“关联到当前服务空间的应用”的uniPush服务。
关联服务空间说明:
uni-push2.0需要开发者开通uniCloud。不管您的业务服务器是否使用uniCloud,但专业推送服务器在uniCloud上。
如果您的后台业务使用uniCloud开发,那理解比较简单。
如果您的后台业务没有使用uniCloud,那么也需要在uni-app项目中创建uniCloud环境,在HBuilderX中和dev的uni-push配置中均绑定相同服务空间,之前的业务仍然由客户端连接原有传统服务器,push相关功能则通过uniCloud服务空间实现。如果您之前使用过三方推送服务的话,可以理解为您的服务器不再调用个推服务器,而是改为调用uniCloud服务空间。
在uniCloud的云函数中,加载扩展库
`uni-cloud-push`
,直接调用相关API,无需额外的服务端配置。而传统服务器开发者需要把这个云函数URL后变成http接口,再由原来的php或java代码调用这个http接口。
注意:
`Android包名、签名(SHA1指纹)`
或
`iOS Bundle ID`
,必须确保与客户端manifest.json配置的证书相关信息一致,否则可能会导致无法正常打包或收到推送消息。
参考资料:
[
关于Android证书
](
https://ask.dcloud.net.cn/article/35985#server
)
、
[
iOS证书申请
](
https://ask.dcloud.net.cn/article/152
)
开通完成后
你也可以在这里修改以上信息
开通完成后
,后续仍可以在这里修改以上信息。
## 第二步:配置
-
iOS 平台还需要上传专用的推送证书
...
...
@@ -133,6 +152,9 @@ uni.onPushMessage((res)=>{
更多客户端API详情
[
文档
](
#客户端API文档
)
# 开发文档
`uni-push`
有服务器API和客户端API。
## 服务端开发 - uniPush扩展库@uni-cloud-push
为云函数启用uniPush扩展库,在云函数右键-管理公共模块或扩展库依赖。如图所示:勾选uni-cloud-push 统一推送服务,点击确定即可。
</br>
...
...
@@ -169,7 +191,7 @@ exports.main = async (event, context) => {
"
data
"
:
{
"
type
"
:
"
single
"
,
"
body
"
:
"
您好!
"
,
"
from_uid
"
:
"
79550af260d9db5f22ae00ff6f397763
"
,
"
from_uid
"
:
"
79550af260d9db5f22ae00ff6f397763
"
,
// 这里是uni-id的用户id
"
to_uid
"
:
"
cbddf0af60d46da61252b29f4e4e6339
"
,
"
time
"
:
Date
.
now
()
}
...
...
@@ -180,6 +202,7 @@ exports.main = async (event, context) => {
### 消息推送
向设定的(单个、群组、全体)用户,即时或定时推送消息。支持设置:通知栏消息内容、控制响铃,震动,浮动,闪灯;手机桌面应用右上角的角标等。
#### 接口形式
```
js
await
uniPush
.
sendMessage
(
OBJECT
)
...
...
@@ -1689,20 +1712,21 @@ uni.offPushMessage(eventName);
-
如果uni.offPushMessage没有传入参数,则移除App级别的所有事件监听器;
-
如果只提供了事件名(eventName),则移除该事件名对应的所有监听器;
##
2.0相比1.0
优势
1.
A
PP、微信小程序、H5全端支持消息推送
##
uni-push2.0相比1.0的
优势
1.
A
pp、微信小程序、H5全端支持消息推送。
2.
统一行为:默认应用离线消息走“通知栏消息”,应用在线走“透传消息”。
*
如果需要应用在线时,消息展示在通知栏用
`plus.push.createMessage`
,创建本地消息实现
3.
新增uni
Push服务端sdk
(uniCloud扩展库)
3.
新增uni
-push服务端API
(uniCloud扩展库)
消息推送属于敏感操作,只能直接或间接由服务端触发。
传统的三方push服务,需要开发者在服务端配置密钥或证书,根据服务器端文档签名获取token,再向相关URL接口发起网络请求......
而UniPush2.0,开发者无需关心证书、签名、服务器端文档,使用简单,极简的代码,云函数通过
`uni-cloud-push`
(uniCloud 扩展库)的API即可直接执行uniPush所有操作,详情
[
文档
](
#uni-cloud-push
)
。
关于扩展库可以理解成是一个不可见的,框架集成的公共模块
。
4.
新增uni
Push客户端api
扩展库是云函数sdk的一部分,但由于部分功能并不是所有开发者都需要,为减少体积允许通过扩展库的方式来增删
。
4.
新增uni
-push客户端API,不再使用plus API
*
uni.onPushMessage 绑定方法监听消息
*
uni.offPushMessage 解绑方法监听消息
*
uni.getPushCid 获取用户设备推送标识
5.
uni-admin端新增push管理面板
5.
支持uni-id,可直接通过uni-id来指定用户发送消息
6.
uni-admin端新增push管理面板
## 问题记录:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录