uni-push是DCloud联合个推公司推出的、全端的、云端一体的统一推送服务。

什么是push?

push,指服务器主动向客户端发送消息的技术。无需客户端持续轮询服务器,即可获得即时数据。

轮询有很多弊端:1) 客户端应用必须实时在线;2) 手机端耗电严重;3) 服务器负载高且浪费资源

手机的通知栏、小程序的订阅消息都是一种push,由手机操作系统或微信在底层提供了push通道,屏蔽了轮询的各种弊端。你的应用可以被关闭,只要手机有网,操作系统提供的push通道即是实时在线的。

提醒:web浏览器的webnotification其实是一个本地通知栏功能,浏览器厂商没有提供push通道。

当客户端在线时,push通过socket协议实现。当客户端离线时,服务器找不到客户端,开发者无法自己实现推送,只能依托手机操作系统、小程序底层提供的离线消息推送,调用指定的手机厂商或小程序厂商的服务器接口来发送消息。

所以一个push系统需要3部分协作:开发者的业务服务器 + 专业push服务器 + 开发者的客户端应用。

push主要流程是什么?

  1. 开发者的业务服务器向专业push服务器发送指令,告知需要向哪些客户端发送什么样的消息
  2. 专业push服务器再向客户端发送消息
  3. 若手机应用在线,直接收到push;若不在线,手机用户在操作系统的通知栏中看到push消息,点击后呼起客户端应用,客户端代码可以接收响应获得消息;如果是小程序的话,则是在微信消息里看到订阅消息,点击后呼起小程序并拿到启动参数。

由于手机厂商众多,他们各自都有不同的推送服务。他们对App后台耗电都有查杀机制,除了微信等大应用,普通应用很难常驻后台。

所以业内有专业的推送服务厂商把各种手机厂商的通道封装成一套统一的API,如个推(属于上市公司每日互动);同时这些三方专业推送厂商还提供了高速socket通道。当应用在线时,也可以直接通过socket下发消息。否则开发者需要写很多判断代码、搭建socket服务器、处理在线时和离线时各种差异。

开发者的uniCloud应用服务器向uniPush服务器发送push消息,然后

  • 如果客户端应用在线,客户端通过socket直接收到push在线消息;
  • 客户端应用不联网时,uni-push服务器根据客户端类型,把push消息发给某个手机厂商的push服务器或小程序的订阅消息服务器;然后厂商push通道会把这条消息发到手机的通知栏或微信的订阅消息里;手机用户点击通知栏消息或小程序订阅消息后,启动App或小程序,客户端才能收到离线消息。

uni-push2.0 使用uniCloud产生的费用说明

uni-push本身并不收费,实际使用中需要依赖uniCloud云服务,而uniCloud价格很实惠:

  • 调用10000次云函数仅需0.0133元
  • 调用10000次数据库查询仅需0.015元

一次消息推送 = 1次云函数请求 + 最高3次数据库查询(最常用的基于user_id推送仅需一次查询

作者 admin

百度广告效果展示