聊聊关于APP推送那些事,分析各个端都是怎么协作完成推送任务的

原创
移动开发
推送功能已经成为APP里面必备的一个功能,利用推送,我们除了能够将热门信息推送给用户外,还能够将一些和用户本人相关的信息推送给用户,那么两种类型的推送都是怎么样的呢?要实现两种推送,我们应该怎么做?

【51CTO.com原创稿件】推送功能已经成为APP里面必备的一个功能,利用推送,我们除了能够将热门信息推送给用户外,还能够将一些和用户本人相关的信息推送给用户,那么两种类型的推送都是怎么样的呢?要实现两种推送,我们应该怎么做?

4

看到上图是不是很有亲切感呢?打开很多APP的时候,我们都会发现这样一个有趣的事情,就是这些APP会推送各种各样的信息给我们,比如某条新闻热点,某个用户评论、收藏和分享了我的文章,甚至有些商城类APP还会推送发货、退货、优惠通知等等,下面我们就来聊聊关于推送的相关知识。

一个简单的人为消息推送轻架构

2

上图是一个用于生产环境的推送轻架构图,从图中我们能够看到,首先由我们的内容编辑工作者从管理后台选择要推送的新闻、视频等等内容,然后后端程序通过SDK或者HTTP API将这些推送的内容传递给推送服务端,推送服务端接收到这些即将推送的消息之后,经过一系列的处理,然后依次发送给APP里面的客户端,APP里面的客户端收到推送消息之后,将推送消息显示在我们的手机状态栏,从而得到我们最后看到的推送。

虽然推送程序是一个C/S程序,但是很大部分个人或者企业都是不会自己去开发推送的,而是借助市场上已经提供的现成推送框架来实现推送的功能,目前市场上的推送框架主要有:小米推送、百度推送、友盟推送等等。

消息生产者 & 消息消费者

上面聊了一种基于人为的推送,所有要推送的消息都是由我们人为选择的,并且普遍都是将其推送到所有的APP用户,但是对于一些特殊的推送,就只能够推送给某个用户了,比如发货通知、VIP到期通知、会员续费通知等等的推送,因为只针对某个用户,所以这时候我们只能够用程序的方式来代替人类完成推送,不过实现都是一样的,只不过要推送的内容由程序生成而已,那么怎么才能够做到推送给某个用户呢?

1

其实在我们的推送框架里面,对于每个APP都有一个推送的唯一标识,比如小米推送就是用regid来表示,有了这个唯一标识,我们可以在用户登录APP的时候,将这个唯一标识和我们的用户UID绑定起来,这样我们就能够将该UID产生的各种消息推送给他了。

一个轻型小巧的自动消息推送架构

上面简单聊了怎么将用户和推送标识符关联起来,下面我们来聊聊怎么实现一个非人为消息推送架构,将和用户相关的信息推送给他。

3

在上图中,我们采用了redis的订阅发布来实现消息的生产与消费,所谓redis订阅就是订阅某个通道的消息,然后当这个通道有消息之后,Redis服务端会将其发送过来,所谓redis发布消息就是将应用产生的各种消息保存到Redis服务端的某个通道里面,我们这里只是选择稍微简单的一种实现方式,当然你还可以使用前面介绍的MQ来实现。

推送存在的弊端

由于现在很多APP都有推送功能,导致我们的手机每天都会收到很多推送,所以很多用户会选择将一些不重要的APP推送功能权限关闭了,这样我们的推送就无法到达用户的APP了,推送的意义也就不存在了。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:何星 来源: 51CTO
相关推荐

2022-12-25 10:47:52

2022-09-09 08:08:28

开源项目服务

2013-07-02 00:11:46

极光推送App推送市场移动开发

2018-01-03 11:35:34

推送AndroidiOS

2017-03-31 10:27:08

推送服务移动

2020-11-30 13:10:39

MySQL安全服务器

2021-08-06 11:50:49

Linux 字节对齐Linux 系统

2012-05-01 08:06:49

手机

2023-07-31 08:21:22

语法校对器Pick

2023-12-06 19:04:31

多平台消息推送

2012-07-13 00:03:08

WEB前端开发WEB开发

2019-12-10 08:00:46

Kata容器Linux

2015-09-14 09:28:47

2009-02-19 10:21:00

路由多WAN口

2015-08-13 10:54:46

2021-03-18 16:05:20

SSD存储故障

2012-01-02 19:30:22

iPad

2011-08-22 16:42:43

SqliteiPad

2022-06-02 08:42:15

Redis数据库

2011-08-01 17:31:25

Xcode开发 Cocoa
点赞
收藏

51CTO技术栈公众号