消息推送 - CSDN
  • 本课程将带领大家使用java实现微信公号和小程序的推送功能。 本节课你能学到以下知识点 1, 实战入门java后台的开发 2,学会springboot 3,微信公号模版推送功能的实现 4,小...
  • 几种消息推送的方案

    2018-04-20 19:48:46
    首先看一张国内Top500 Android应用中它们用到的第三方推送以及所占数量:现在总结下Android平台下几种推送方案的基本情况以及优缺点:一、使用GCM(Google Cloude Messaging)Android自带的推送GCM可以帮助开发人员给...

    首先看一张国内Top500 Android应用中它们用到的第三方推送以及所占数量:

    现在总结下Android平台下几种推送方案的基本情况以及优缺点:

    一、使用GCM(Google Cloude Messaging)

    Android自带的推送GCM可以帮助开发人员给他们的Android应用程序发送数据。它是一个轻量级的消息,告诉Android应用程序有新的数据要从服务器获取,或者它可能是一个消息,其中包含了4KB的payload data(像即时通讯这类应用程序可以直接使用该payload消息)。GCM服务处理排队的消息,并把消息传递到目标设备上运行的Android应用程序。

    优点:Google提供的服务、原生、简单,无需实现和部署服务端。

    缺点:1.要求Android 2.2以上,对于不少2.2以前的系统没法推送;

         2.国内服务不稳定。而且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。

         3.需要用户绑定Google账号,但不少国内用户没有Google账号。

    二、使用XMPP协议(Openfire+Spark+Smark)

    XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性,有很强的可扩展性。包括上面讲的GCM服务器底层也是采用XMPP协议封装的。

    优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。

    缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。

    而androidpn(Android Push Notification)就是基于 XMPP 开源组件的一套整合方案,服务端基于Openfire、客户端基于Smack。到AndroidPN项目主页( http://sourceforge.net/projects/androidpn/ ) 下载2个文件: androidpn-server-0.5.0-bin.zip 和 androidpn-client-0.5.0.zip 分别是服务器和客户端的代码。详细的实现方式网上有不少文章。

      1.androidpn服务端重启后客户端不会重连,这个非常悲剧

      2.由于服务器不保存消息,造成了如果客户端当前离线就收不到消息

      3.androidpn发送完消息就不管了,所以没有消息回执报表之类,造成没法做应用后续的数据分析用户体验的改善,这对于企业级的应用是个致命伤。

    XMPP协议比较费电费流量,这个对当前智能机的消耗太大,在窄带网络和不稳定的(手机)网络都不是最优的选择。但总体来说,XMPP协议还是比较成熟的。

    三、使用MQTT协议(想了解更多可以看http://mqtt.org/)

    轻量级的、基于代理的“发布/订阅”模式的消息传输协议。

    优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考: http://mqtt.org/software),且已有C++版的服务端组件rsmb。

    缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。

    四、HTTP轮循方式

    定时向HTTP服务端接口(Web Service API)获取最新消息。

    优点:实现简单、可控性强,部署硬件成本低。

    缺点:实时性差。

    五、采用第三方服务

    就是前面介绍的第三方推送,客户端只需要导入第三方提供的lib库,有第三方管理长连接,负责消息的接收/发送。同时对消息都有比较详细的报表数据,可以用于做数据分析、挖掘,改善用户体验。

    展开全文
  • 浅谈消息推送功能

    2018-08-06 09:40:39
    消息推送(Push)指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。用户可以在移动设备锁定屏幕和通知栏看到push消息通知,通知栏点击可唤起APP并去往相应页面。我们平时在锁屏上看到的微信...

     

    什么是消息推送

    消息推送(Push)指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。用户可以在移动设备锁定屏幕和通知栏看到push消息通知,通知栏点击可唤起APP并去往相应页面。我们平时在锁屏上看到的微信消息等等都属于APP消息推送行列。

     

    根据产品形态和业务类型,从大的层面看,可以将消息类型拆分为“IM类”和“非IM类”,非IM类又可以根据其在实际场景中的应用细分以下不同类型:
    IM即时通讯 类

    包括微信、陌陌、qq等。

    非 IM 即时通讯

    新闻资讯类:如网易新闻、今日头条、天天快报等新闻资讯;

    营销活动类:如天猫 APP 预售、大促、满返满减等营销活动信息;

    产品推荐类:如天猫、京东关联产品推荐、新品推荐等基于大数据和算法的个性化推荐;

    系统功能类:如天猫发货到货物流通知、生日祝福提醒、优惠券过期提醒等与个人信息特征或行为属性相关联的系统内消息push。

    消息推送机制运用得好不好,往往会在用户体验,产品功能上对用户形成较大影响。具体说来,消息推送的好坏影响,有以下几点参考:

    好处

    1.信息告知与提醒

    消息推送充当着信息分发渠道的角色,平台方有关产品更新、内容更新、活动消息等内容发布,均可以通过消息推送渠道 push 给用户,能够让用户第一时间知晓此类消息。

    如果是线上活动类、电商大促等促销活动,用户也能第一时间知晓并参与进来。

    2.促进活跃,增强粘性

    消息推送也是用户运营的一块阵地,很多产品把它当作和用户交流与沟通的一道窗口。运用得当的推送消息,能够有效的促进用户活跃,提高用户粘性,让用户时不时打开你的 APP 玩起来。

    3.唤醒沉默用户,提高留存

    有些用户可能玩着玩着就流失了,几个月也不打开一次 APP。通过有趣的推送消息,也许能够唤醒起一部分流失掉的用户。甚至,在用户将要流失之际,作为流失预警机制的一道门阀,防止用户过早流失。

    4.提高功能模块使用率

    当产品更新版本时,可以通过推送消息第一时间提醒用户,引导用户打开并使用新功能,可以提高特定功能模块的使用率。

    坏处

    1.骚扰用户,提高卸载率

    有些运营同学或者是单纯因为 KPI 的压力,或者是对于消息推送没有建立有效的运营策略,也不了解用户的行为习惯,只是单纯地从己方利益出发——只想要更多地提高用户打开 APP 的频率。

    于是,频繁地给用户推送消息,打扰用户,很多时候往往得不偿失,加快用户流失速度,甚至导致用户直接卸载 APP。

    1. 透支信任

    有些运营同学为了吸引用户的注意力,从推送标题上下功夫,想了很多歪门邪道,常常用虚假标题吸引用户,当用户打开 APP 一看内容,发现跟标题描述得相差甚远。

    用户经常会有一种“被骗”的感觉,久而久之,他们明白了你的套路,便不再信任你,当你有真实的内容想要告诉用户时,他们也不再打开了。因为他们潜意识里已经认定——妈的一定又是骗我的!

    3.过多无价值内容,造成用户反感与麻木

    消息推送能够吸引一部分用户打开APP,但是怎样让用户在 APP 内开心地玩起来,并喜欢上你的APP,这是值得思考的问题。

    当然,这取决于很多因素,产品功能层面的,内容价值层面的,视觉美感层面的,交互体验层面的……等等各种因素。

    但有一点很重要,既然是内容的push,那么推送的内容当然得是用户喜闻乐见的,如果大部分内容对用户来说毫无价值,很容易导致用户反感。

    消息推送的时机与场景时机

    这里的时机是指每一天的推送时间段。一般情况下,有这样几个时间段可供参考:

    上午9点–10点:人们刚到公司,一般不会太忙,此时推送消息打开率比较高;中午12点–14点:这个时间段是午休时间,人们一般都会看看资讯啊、新闻啊、玩玩微信啊啥的,在 APP 的使用高峰时段推送消息,打开率也比较高;下午5点–6点:这个时间段人们处于准备下班的状态,比较懒散放松,有时间的话一般会选择玩玩手机,此时推送消息会吸引到用户注意力,不至于被忽略;晚上21点–22点:结束了一天的工作,吃完晚饭终于可以休息了,在人们看新闻资讯、处理聊天内容或者玩游戏的间隔,推送一条消息,打开率妥妥的。

    当然,这些时间段也不是绝对的,肯定也存在例外,这个时间仅做参考。还有一种方法就是——我们可以根据用户的真实使用场景去反推 push 时机。

    什么意思呢,也就是说,将自己代入真实的用户使用场景,比如中午吃饭的时候,你一般会做些什么呢?打开微信处理一下一上午没来得及回复的私信?看看群里面都聊了些啥?打开新闻 APP 看看今天都发生了哪些大事?或者偷偷匹配一下旗鼓相当的对手

    借助真实自己的使用场景,来反推 push 时机,或许能达到不错的效果。

    场景

    这个是什么意思呢,其实是说我们要根据用户的历史行为去分析,在什么样的场景下去进行消息推送是比较合理的。

    举个栗子,某宝的发货到货通知。比如你昨天晚上在某宝上买了个东西,今天早上你想知道这个东西有没有发货,一般情况下你是不是得打开APP去自己查看,但是如果此时,或者发货时APP 给你推送了一条消息“您购买的XXXXXX商品已发货”,就会觉得这个APP用的很舒服

    其他可能的应用场景,比如优惠券到期提醒,生日祝福提醒等,也是一样的道理。

     

    问:IM类和非IM类有什么区别

    答:一个是即时通讯,一个是非即时通讯,简单来说就是一个主要功能是聊天,另一个则不是

    问:如何分辨IM类产品和非IM类产品

    答:从产品的核心功能出发,是否属于即时通讯类产品

    问:为什么说反推用户使用时间比较好

    答:如果你自己也是此类软件的用户,那么更能直观展现出这类产品的一类人群的使用时间

     

    PPT:https://it-xzy.github.io/PM-NEW/2018.8.1.PM-9.html#/

    视频:https://v.qq.com/x/page/e0747roz2li.html

     

    展开全文
  • 消息推送方案

    2018-11-09 17:20:29
    对于需要即使通知用户的业务,例如告警等,需要消息推送功能,保证通知的及时性。   应用场景需求 消息推送涉及到消息的发送和接收,即方案既要能在后端中使用,也要能在前端和移动端使用,所以需要能适配java 和...
    • 目的

    对于需要即使通知用户的业务,例如告警等,需要消息推送功能,保证通知的及时性。

     

    • 应用场景需求

    消息推送涉及到消息的发送和接收,即方案既要能在后端中使用,也要能在前端和移动端使用,所以需要能适配java 和 javaScript 语言。

     

    • 选择方案

        常规思路如下三种:

    轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

    推送(Push)方式:移动终端现在服务器端注册并告知关注的消息主体,服务器获得相关的消息之后,根据主体主动推送给移动终端。

    常连接方式:移动终端与服务器端保持常连接,保证消息下发的及时性。

     

    通过检索分析,选择使用push方式,并且使用MQTT协议来实现。此协议开销小,能高效地使用网络,也是物联网选择使用的一个协议。并且由于使用较多,说明资料相对来说比较丰富,便于开发使用。

    消息中转代理服务使用Apache的开源工具 ActiveMQ Artemis, 它是一个多协议消息中转服务,支持STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets。

    服务端和客户端之间通过发布和订阅方式来实现消息推送,消息的中转即通过Artemis来实现。

     

     

     

     

     

     

     

    MQTT协议针对消息传送提供三种服务质量:

    “至多一次”

    消息根据底层因特网协议网络尽最大努力进行传递。 可能会丢失消息。

    “至少一次”

    保证消息抵达,但可能会出现重复。

    “刚好一次”

    确保只收到一次消息。

    因此我们可以根据具体的业务需要来设置服务质量参数QoS,同时通过主题Topic来区分不同的业务来推送给不同的用户。

     

     

    关于中转服务器的选择,分析了三种服务器,都是开源项目,分别为Apache的 Apollo 、Artemis 还有国内的EMQ, 其中Apollo 操作虽然简洁,但是已经很久没有更新维护了,而国内的EMQ 从使用来看不如Apache的便利,并且其使用Erlang语言开发,非常规开发语言,对于后期使用维护不太方便。综合来看,Artemis的功能比较完备,并且版本一直有在更新维护,使用的是Java语言开发,遇到问题可以从开源社区寻求获取解决方案。

     

    中转消息服务器Artemis信息显示页面

    连接会话:

     

    服务器使用情况:

     

     

     

     

    • 具体使用流程

     

     

     

     

     

     

     

     

    五:参考文档

     

    1、消息中转服务Artemis 说明:

    http://activemq.apache.org/artemis/

    其开源项目代码地址:

    https://github.com/apache/activemq-artemis

     

    1. 后台Java(包括App)使用库和代码参考:

    https://github.com/eclipse/paho.mqtt.java

    https://github.com/eclipse/paho.mqtt.android

     

    1. 前台JavaScript使用库和代码参考:

    https://github.com/eclipse/paho.mqtt.javascript

    注意使用对应的库,来进行对应的调用,其JS库有两个版本:

    @namespace Paho

    @namespace Paho.MQTT

     

    1. MQTT 协议说明:

    https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

    中文翻译版本:

    https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

     

    1. 各种代理服务

    https://github.com/mqtt/mqtt.github.io/wiki/brokers

     

    展开全文
  • 消息推送架构介绍

    2018-03-07 10:55:08
    移动设备获得通知的两种方式 随着移动互联网的发展,越来越多的移动端应用得到普及,此处的移动端不仅仅...目前,移动端获得消息通知主要有两种方式:pull(拉)方式和push()方式,下面分别对这两种方式做简要介绍...

    移动设备获得通知的两种方式

    1. 随着移动互联网的发展,越来越多的移动端应用得到普及,此处的移动端不仅仅限于手机,还有很多设备也参与到移动互联中来。比较典型如微软的xbox等,这些设备上运行的应用都需要具有一定的消息通知功能。那么消息是如何从应用的服务端到达应用终端,也就是各种移动设备上呢?目前,移动端获得消息通知主要有两种方式:pull(拉)方式和push(推)方式,下面分别对这两种方式做简要介绍。

      • pull方式

        • pull方式即“拉方式”,这种方式中手机上的应用程序在启动时及经过一定周期会定时连接应用的服务端来获得服务器需要传递给终端的消息,因为此处是终端从服务端主动获得消息,因此称为拉方式。
          此方式服务端实现简单,只需要在终端连接上之后把需要发送的消息发送给终端即可,但是此方式有如下弊端:

          1. 每个应用终端都需要建立到自己服务器的socket连接,移动终端需要维护多个socket连接,较为耗电,不易于管理。
          2. 采用拉的方式,应用在启动的时候会从应用的服务器上拉取消息;启动之后,应用会周期性的连接服务器去检查是否有消息需要拉取,这种方式并不实时,需要等到终端主动拉取的时候服务器才能把消息传递到终端。如果应用频繁检查是否有消息需要拉取,那么耗电会增加,如果检查周期过长,那么会影响消息的实时性
          3. 综上,采用pull方式进行通知消息的传递并不是一个很好的方法。
      • push方式

        • 采用push方式主要有点如下:

          1. 采用push方式,移动终端只需要和推送服务器之间保持一个长连接即可。这样移动终端用于推送的socket连接数量就与需要推送服务的应用数量无关了,只需要维持一个终端与推送服务器之间的长连接即可,所有应用的服务端都是直接连接推送服务器并通过推送服务器来把消息推送到终端。而终端也只与推送服务器进行连接即可获得推送的通知消息。
          2. 推送服务器通过长连接,在消息到来的时候可以立即把消息推送到连接上来的终端上,实时性比较高

    一个典型的消息推送系统设计

    设计通知推送系统需要考虑的几个问题

    • 推送应用认证问题:使用推送系统的应用首先需要认证,只有认证通过的应用才允许使用推送系统推送消息。
    • 多个推送服务器的负载均衡问题:通过在推送应用服务端程序与推送服务器之间放置tcp负载均衡服务器来实现。
    • 移动端服务器连接负载均衡问题:通过DNS负载均衡来实现。
    • 推送消息时,移动终端在线,则消息应该立即送达。
    • 推送消息时,移动终端不在线,那么分两种情况:对于按序消息,应该每条消息都保存,在移动终端上线时按照顺序由移动终端主动拉取,此时,新的推送消息要等待之前的消息都被接收之后再实时推送;对于覆盖消息,只保留最后一条消息,在移动终端上线之后直接实时推送消息。

    消息推送系统示意图

    • 此图展示了实际应用场景中消息推送的关系。
    • 在实际应用场景中,需要推送的应用服务端只与推送系统进行交互,它并不知道是否有及有多少终端需要被推送消息。服务端把需要推送的消息交给推送系统,其余的就不是应用服务端需要关心的事情了。
      这里写图片描述

    消息推送系统逻辑设计图

    这里写图片描述

    • 此图中,推送应用1,2,3为推送应用的服务端,其负责把需要推送的消息放入推送系统。这些应用服务端通过负载均衡服务器来连接到具体的推送服务器。负载均衡服务器在应用连接过来时,首先会通过
    展开全文
  • App消息推送的原理

    2019-04-29 16:19:44
    Android消息推送原理3.1 操作系统有自身的消息推送功能(系统级别)3.2 三种基本的推送方式:Push、Pull 和 SMS3.3 七种主流的Android消息推送方式 1. 基本概念 目的: 在用户未打开App时,App主动向用户推送...
  • 最开始自己公司的后台推送系统只能是用户在线时推送推送消息也不会保存,若用户离线,那么这条推送消息就再也无法获取。更让人头疼的是:推送的内容和推送系统是耦合在一起的,这样往往在改一处代码的同时,会出现...
  • 如今的手机每天都会被各种App的消息推送覆盖,消息推送也成了周末去哪儿APP增加自己曝光量的一种重要手段。消息推送的技术也日渐成熟,各种平台纷纷出现,抢占这一业务,本文就从技术角度来吐槽吐槽。本文是由我们的...
  • https://www.jianshu.com/p/b61a49e0279f1.消息推送的实质实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App再发送给用户2. 作用产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的...
  • 【原创】EAWorld2019-03-21 08:31:00 转载本文需注明出处:微信公众号EAWorld,违者必究。 引言: ...而随着各大厂商浏览器版本的迭代,前端技术的不断革新,消息推送用到的场景也越来越多了。 ...
  • 今天就由本菜鸟给大家做一个简单的IOSApp消息推送教程吧!一切从0开始,包括XCode6, IOS8, 以及苹果开发者中心最新如何注册应用,申请证书以及下载配置概要文件,相信很多刚开始接触ios的人会很想了解一下。(ps:...
  • 消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传、资讯类产品进行新闻推送等等,如下图: 本文将介绍Android中实现消息推送的第三方推送的详细解决方案 阅读本文前,建议先阅读我的写...
  • 在Android开发中,消息推送功能的使用非常常见。为了降低开发成本,使用第三方推送是现今较为流行的解决方案。 今天,我将手把手教大家如何在你的应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送...
  • 比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序后台的设置,开发设置中,消息推送功能: 点击开启消息推送功能,认证成功...
  • 微信小程序的消息推送功能简单的说就是发送一条微信通知给用户,用户点开消息可以查看消息内容,也可以通过消息链接进入到小程序的制定页面。 微信小程序消息推送需要用户触发动作才能发送消息,比如用户提交订单、...
  • 前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,《借助云开发实现小程序订阅消息和模板消息的推送功能》是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序订阅消息推送的文章。...
  • 最近好像有不少朋友关注Android客户端消息推送的实现,我在之前的项目中用到过Java PC客户端消息推送,从原理讲上应该是一致的,在这里分享一下个人的心得。 消息推送实现原理  这里的消息推送,通常是指由...
  • 消息推送系统方案

    2018-09-04 16:14:17
    消息推送创建/发送 消息推送后台管理: 消息推送模块: 消息推送管理: 新建推送消息: 消息支持在指定的时间开发推送功能; 消息支持按照不同群体分类进行精准推送功能; 标签推送:给用户增加标签...
  • 一般在微信企业号下做软件开发,基本都会用到消息推送,用户在完成一个操作之后,会在企业号中推送一条消息,这条消息可能是文本、图文等不同类型,在具有审批流程的消息推送中,下一级人员审批完成会给上一级推送一...
  • HBuilder webapp实现消息推送 关于软件的push推送 HBuilder 只提供了二个SDK(小米推送、个推) 因为我使用的是个推所以这篇文章就主要介绍如何使用个推实现消息推送、 1.注册个推 个推官网:...
1 2 3 4 5 ... 20
收藏数 148,267
精华内容 59,306
热门标签
关键字:

消息推送