【.com原稿】推送功能已经成为APP中必备的功能。使用推送,我们不仅可以推送热门信息给用户,还可以将一些与用户相关的信息推送给用户,那么推送有哪两种呢?要实现两种推送,我们应该怎么做呢?看到上图是不是很亲切呢?当我们打开很多APP的时候,我们会发现这样一个有趣的事情,就是这些APP会向我们推送各种信息,比如某个新闻热点,某个用户评论收藏分享我的文章,甚至一些商城APP会还有推送发货、退货、打折通知等,下面就说说推送的相关知识。一个简单的人为消息推送轻架构图上图是生产环境的轻推送架构图。从图中可以看出,首先我们的内容编辑从管理后台内容中选择要推送的新闻、视频等,然后后台程序通过SDK或HTTP将推送的内容传递给推送服务器应用程序接口。推送服务器收到要推送的消息后,经过一系列处理,依次发送给APP中的客户端。APP中的客户端收到推送消息后,会将推送消息显示在我们手机的状态栏上,从而得到我们上次看到的推送。推送程序虽然是C/S程序,但大多数个人或公司并不自己开发推送,而是使用市场上提供的现成的推送框架来实现推送功能。目前市面上的推送框架主要有:小米推送、百度推送、友盟推送等。消息生产者&消息消费者我们讲了一个人性化的推送,所有要推送的消息都是我们自己选择的,一般会推送给所有APP用户,但是对于一些特殊的推送,只能推送给某个用户,比如发货通知,VIP过期通知,会员更新通知等,因为只是针对某个用户,所以这个时候我们只能用程序代替人来完成推送,但是实现是一样的,只不过要推送的内容是程序生成的,那怎么推送给某个用户呢?其实在我们的推送框架中,每个APP都有一个唯一的标识。比如小米推送就是用regid表示的。有了这个唯一标识,我们就可以在用户登录APP的时候,把这个唯一标识和我们的结合起来。绑定用户的用户UID,这样我们就可以将UID产生的各种消息推送给他。一个轻量级紧凑的自动消息推送架构我们简单地讲了如何将用户与推送标识符相关联。接下来说说如何实现一个非人工消息推送架构,将用户相关的信息推送给他。上图中,我们使用redis订阅发布来实现消息的生产和消费。所谓redis订阅就是订阅某个频道的消息,然后当这个频道有消息的时候,Redis服务器就会发送。所谓redis发布消息就是将应用程序产生的各种消息保存到Redis服务器的某个通道中。我们这里只是选择了稍微简单一点的实现方式。当然也可以使用前面介绍的MQ来实现。推送的缺点因为现在很多APP都有推送功能,我们的手机每天都会收到很多推送,所以很多用户选择关闭一些不重要的APP推送功能权限,这样我们的推送就无法到达用户。APP,推送的意义不存在。【原创稿件,合作网站转载请注明原作者和出处为.com】
