精华内容
参与话题
问答
  • androidpn消息推送

    千次下载 热门讨论 2012-07-04 16:32:15
    androidpn消息推送 其中包含客户端 服务器端包含tomcat和jetty版本
  • 消息推送

    千次阅读 2016-10-07 15:12:00
    消息推送消息推送(即时通讯) 目的:想办法让服务器能够及时通知客户端 服务器主动发送消息给客户端(建立服务器端和客户端建立长链接) 应用场景:广告、即时通信 实现方案: 1、轮询:客户端每隔一定的时间就向...

    消息推送

    消息推送(即时通讯)

    • 目的:想办法让服务器能够及时通知客户端
    • 服务器主动发送消息给客户端(建立服务器端和客户端建立长链接)
    • 应用场景:广告、即时通信
    • 实现方案:
      • 1、轮询:客户端每隔一定的时间就向服务器发出请求,获得最新的消息
        • 特点:
          • 1、如果应用在最新新闻通知上,则效率较低
          • 2、技术简单,好实现
        • 应用场景:当服务器端的数据以固定的频率更新时,比如股票信息,黄金,期货类似的信息
      • 2、发短信:
        • 特点:效率高,最及时,费用高
        • 应用场景:比较土豪的做法,不差钱
      • 3、使用第三方的开源项目
        • AndroidPN(android push notify)
      • 4、使用第三方的API实现推送功能
        • 百度推送
        • 极光推送
        • 个推
        • 微信推送
    • 实现方式
      • 第3和第4原理上都属于消息推送
      • 消息推送的实现原理:Socket长链接+心跳帧
      • 平常讲的java中的Socket通信、Socket链接就是短链接
      • 长链接:服务端和客户端进行通信,通信完后,Socket没有关闭,一直处于开启状态,服务器和客户端一直都有一个socket链接
      • 但是如果这个长链接有一段时间没用被利用,不用的话,就会被路由器认为是一个无用的链接,那么很有可能链接被断掉,断掉后服务器就无法再次找到客户端,就出现了心跳帧这个概念
      • 心跳帧:每隔一段时间发送一段极短的数据,证明客户端还活着。验证socket链接还存活着。告诉路由器这个链接有效
      • 如果发送消息失败,服务器将消息暂存起来,一旦检测到客户端恢复心跳,就重新发送。

    AndroidPN(android push notify)

    • Androidpn :android pushnotification(中文名称:Android消息推送)。参考这里

      基于XMPP协议的java开发有一个开源框架,那就是smack,它主要封装了一些XMPP的实现。在引用smack的基础上

      实现和服务器端的持久连接,以实现服务器对客户端的推送,那就是Androidpn。Androidpn在客户端集成了smack。

      这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。所以Androidpn可以说是使用了smack框架

      的开源项目。

    • Androidpn使用好处:

      用Androidpn好处有以下方面:采用完全开放的XMPP协议进行数据传输(QQ,MSN,GTalk等都是采用的这种协议)。

      良好的框架支持(专门为android 而产生的推送框架smack,以及很好的管理socket的框架MINA,都是很成熟的产品);

      完全开放的源代码(我们可以在Androidpn的基础上进行修改,来满足我们的任何需求变更);大大的减少了客户端的代

      码,降低了android的开发难度。

    • XMPP网络协议

      XMPP : The Extensible Messaging andPresence Protocol.

      中文全称:可扩展通讯和表示协议.

      简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。

      XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。

      它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即

      使其操作系统和浏览器不同。

    • XMPP主要显著的优点主要有以下几个方面:

      • 1、分布式 任何人都可以运行自己的XMPP服务器,它没有主服务器,客户端简单

      • 2、安全性很高。使用SASL及TLS等技术的可靠安全性

      • 3、开发性 它是开源的,易于进行学习和了解

      • 4、跨平台 毋庸置疑,使用的XML数据格式进行传输的

      • 5、单台机器就可以容纳20万个链接,非常稳定,支持扩展和自定义
    • XMPP缺点:如果定制的话需要专业的javaEE知识

    • androidPN环境搭建这里

    • 缺点:但是稳定性差、连接数量有限、目前已经停止维护了;

    Socket、HttpUriConnection、HttpClient、HttpUtils之间的关系

    • Socket :JAVA中一切的联网最终都是Socket联网
    • HttpUrlConnection:一个工具类,底层还是Socket,最基本的发出联网请求的工具类
    • HttpClient:HttpClient源码可以看出它内部也是HttpUrlConnection,不过Android的6.0版本中删除了的Apache HTTPclient支持。如果您的应用程序正在使用HTTP client和目标版本是Android2.3(API等级9)或更高,使用HttpURLConnection类类来代替HTTP client
    • HttpUtils:Xutils这个开源框架的一个模块

    • com.wsc.jpushtest

    • JPushTest

    消息推送的扩展

    应用场景广泛,实际上只要涉及到服务器要主动地使客户端被动地收到某一条消息,然后执行相关功能的逻辑全都可以推送来解决

    扩展:

    • 客户端自动的获取数据,客户端不主动的调接口,服务端有数据的时候,客户端就能够自动收到数据

    PS

    • 消息推送(server 端 主动发消息给客户端)
    • 一、原声Android支持的消息推送C2DM

      • 1.2012年6月之前C2DM(cloud to device message),依赖google的Gtalk账号和google服务。
      • 2.国产手机的google服务必须被去掉,工信部规定。
      • 3.国内没法用,国外可以用。
    • 二、C2DM - > GCM

      • 1.gcm(google cloud 2 message) 是C2DM升级版
      • 2.API相对于C2DM更友好,直观,根据API提示就可以完成消息推送的过程
      • 3.依赖google的服务
      • 4.GCM目前也不被推荐了
    • 三、第三方的消息推送

      • 1.个信(商业服务收费)
      • 2.巴别塔(商业服务收费)
      • 3.极光推送(商业服务收费)
      • 4.百度推出消息推送(免费,可以百度的消息推送)
    • 四、自己开发

      • 1.XMPP协议,实现XMPP协议来达到消息推送的目的
      • 2.改造OpenFire,达到推送的目的
      • 3.AndroidPN(韩国人写的项目,spring + struts ),需要自己晚上,保持连接,异常的处理,断线,上线都有很多bug
      • 4.成本太大,server的开销很大。
    • 五、server端轮询

      • 1.客户端循环的向server端指定的端口发送请求,
      • 2.5s,10s,2m,10m,查看消息,有没有我的消息?有,取下来,没有,走人。
    展开全文
  • Android消息推送

    千次下载 热门讨论 2013-04-17 12:02:48
    Android消息推送 支持离线消息 Android消息推送 支持离线消息
  • 前段时间公司需要 Android 端的手机群功能,我们就通过 MQTT 来实现了该功能。 MQTT 的官网如下http://mqtt.org/ 在 MQTT 官网中 http://mqtt.org/software 列举出了实现了该协议的开源客户端和服务器工程和库。...


    前段时间公司需要 Android 端的手机群推功能,我们就通过 MQTT 来实现了该功能。

    MQTT 的官网如下 http://mqtt.org/

    在 MQTT 官网中 http://mqtt.org/software 列举出了实现了该协议的开源客户端和服务器工程和库。

    我们是通过 ApacheActiveClient 开源项目的基础上来实现的。


    下面介绍客户端和服务器简单的搭建:

    客户端 :

    首先到 github(https://github.com/tokudu/AndroidPushNotificationsDemo) 网站上去下载手机客户端程序:

    AndroidPushNotificationsDemo.

    运行结果如下图所示 : 

    其中 Test_android1 是对手机的唯一标识,这个生成策略是可以自己来定的。很多时候我们需要话更多的时间去研究它的源码,而不是去问别人,只有当自己实在找不到解决方案的时候再问,我觉得这样更利于我们对项目的理解和继续扩展。

    服务器端

    至于服务器程序可以到 http://activemq.apache.org/ 去下载。需要注意的是,请读者仔细阅读该开源项目的文档。

    该项目非常强大,支持配置服务器的主从,分布式等。

    当你搭建成功服务器后可以使用客户端连接了。点击 Start Push service 按钮启动推送功能。

    连接成功后你会在控制台看到如下界面:

    在服务器后台你将看到:

    画的红线部分就是你的手机设备,然后单击进入如下界面:

    最后单击确定 ,在手机通知栏将会收到消息 :

    至此,这就是简单的服务器想客户端推送的消息了。

    当然这是最最简单的实现了。接下来就要看自己公司实际的需要进行扩展服务器或者客户端了。

    其实 MQTT 最显著的功能,就是群推。客户端可以注册多个 token(客户端的唯一标识)可以让所有客户端都注册该 token 即可,然后发送的时候,只需要针对一个 token 发消息,那么所有的手机都收到了。不用像其他的推送一样,对每个token都去发一遍。所以MQTT群发的效率的极高的。这样的话对手机端来说就很好了,也许我们需要对某个程序的所有手机发、向某个程序某个版本手机发,向某台手机发推送 等等用MQTT都可以很轻松的实现。

    接下来就是要靠自己去研究 MQTT 了。其他官网文档,和一些开源的功能已经提供了很多我们学习的资料。

    下面是关于 XMPP 协议推送 :Android 消息推送(一)基于 XMPP协议 AndroidPN 推送功能

    如果 github 上面的 Android 客户端的程序不能运行,可以下载我们用的(也是 Github 上下载的):http://download.csdn.net/detail/johnny901114/5820151

    如果还有问题可以留言。

    如果你觉得本文帮助到你,给我个关注和赞呗!

    另外,我为 Android 程序员编写了一份:超详细的 Android 程序员所需要的技术栈思维导图。

    如果有需要可以移步到我的 [GitHub -> AndroidAll](https://github.com/chiclaim/AndroidAll),里面包含了最全的目录和对应知识点链接,帮你扫除 Android 知识点盲区。 


     

    展开全文
  • 在Spring Boot框架下使用WebSocket实现消息推送

    万次阅读 多人点赞 2016-12-23 16:48:37
    Spring Boot的学习持续进行中。前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的支持(使用Spring Boot开发Web项目(二... 什么是WebSocket

    关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!


    Spring Boot的学习持续进行中。前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的支持(使用Spring Boot开发Web项目(二)之添加HTTPS支持),在这两篇文章的基础上,我们今天来看看如何在Spring Boot中使用WebSocket。
    #什么是WebSocket
    WebSocket为浏览器和服务器之间提供了双工异步通信功能,也就是说我们可以利用浏览器给服务器发送消息,服务器也可以给浏览器发送消息,目前主流浏览器的主流版本对WebSocket的支持都算是比较好的,但是在实际开发中使用WebSocket工作量会略大,而且增加了浏览器的兼容问题,这种时候我们更多的是使用WebSocket的一个子协议stomp,利用它来快速实现我们的功能。OK,关于WebSocket我这里就不再多说,我们主要看如何使用,如果小伙伴们有兴趣可以查看这个回答来了解更多关于WebSocket的信息WebSocket 是什么原理?为什么可以实现持久连接
    #Project创建
    使用WebSocket需要我们先创建一个Project,这个Project的创建方式和我们前文(初识Spring Boot框架)说的一样,不同的是在选择依赖的时候选择Thymeleaf和WebSocket依赖,如下图:
    这里写图片描述
    #配置WebSocket
    Project创建成功之后,我们先来配置WebSocket,创建如下类:

    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
        @Override
        public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
            stompEndpointRegistry.addEndpoint("/endpointSang").withSockJS();
        }
    
        @Override
        public void configureMessageBroker(MessageBrokerRegistry registry) {
            registry.enableSimpleBroker("/topic");
        }
    }
    

    关于这个类我说如下几点:

    1.@EnableWebSocketMessageBroker注解表示开启使用STOMP协议来传输基于代理的消息,Broker就是代理的意思。
    2.registerStompEndpoints方法表示注册STOMP协议的节点,并指定映射的URL。
    3.stompEndpointRegistry.addEndpoint("/endpointSang").withSockJS();这一行代码用来注册STOMP协议节点,同时指定使用SockJS协议。
    4.configureMessageBroker方法用来配置消息代理,由于我们是实现推送功能,这里的消息代理是/topic

    #创建浏览器发送消息的接收类
    浏览器发送来的消息用这个类来接收:

    public class RequestMessage {
    
        private String name;
    
        public String getName() {
            return name;
        }
    }
    

    #创建响应消息类
    服务器返回给浏览器的消息由这个类来承载:

    public class ResponseMessage {
        private String responseMessage;
    
        public ResponseMessage(String responseMessage) {
            this.responseMessage = responseMessage;
        }
    
        public String getResponseMessage() {
            return responseMessage;
        }
    }
    

    #创建控制器

    @Controller
    public class WsController {
        @MessageMapping("/welcome")
        @SendTo("/topic/getResponse")
        public ResponseMessage say(RequestMessage message) {
            System.out.println(message.getName());
            return new ResponseMessage("welcome," + message.getName() + " !");
        }
    }
    

    关于这个控制器,首先@Controller注解不必多言,say方法上添加的@MessageMapping注解和我们之前使用的@RequestMapping类似。@SendTo注解表示当服务器有消息需要推送的时候,会对订阅了@SendTo中路径的浏览器发送消息。

    #添加脚本
    我们这个案例需要三个js脚本文件,分别是STOMP协议的客户端脚本stomp.js、SockJS的客户端脚本sock.js以及jQuery,这三个js文件拷贝到src/main/resources/static/js目录下。OK,这三个js文件我已经为小伙伴们准备好了,可以直接在文末下载案例,案例中有,也可以自行下载这三个js文件。

    #演示页面
    在写这个HTML页面之前,我想先说我们要实现的效果是什么样子的。当我的Project启动之后,在浏览器访问消息发送页面,在该页面发送一条消息,当服务端收到这条消息之后给所有的连接上了服务器的浏览器都发送一条消息。OK,我们在src/main/resources/templates目录下新建一个ws.html页面,内容如下:

    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <title>广播式WebSocket</title>
        <script th:src="@{js/sockjs.min.js}"></script>
        <script th:src="@{js/stomp.js}"></script>
        <script th:src="@{js/jquery-3.1.1.js}"></script>
    </head>
    <body onload="disconnect()">
    <noscript><h2 style="color: #e80b0a;">Sorry,浏览器不支持WebSocket</h2></noscript>
    <div>
        <div>
            <button id="connect" onclick="connect();">连接</button>
            <button id="disconnect" disabled="disabled" onclick="disconnect();">断开连接</button>
        </div>
    
        <div id="conversationDiv">
            <label>输入你的名字</label><input type="text" id="name"/>
            <button id="sendName" onclick="sendName();">发送</button>
            <p id="response"></p>
        </div>
    </div>
    <script type="text/javascript">
        var stompClient = null;
        function setConnected(connected) {
            document.getElementById("connect").disabled = connected;
            document.getElementById("disconnect").disabled = !connected;
            document.getElementById("conversationDiv").style.visibility = connected ? 'visible' : 'hidden';
    //        $("#connect").disabled = connected;
    //        $("#disconnect").disabled = !connected;
            $("#response").html();
        }
        function connect() {
            var socket = new SockJS('/endpointSang');
            stompClient = Stomp.over(socket);
            stompClient.connect({}, function (frame) {
                setConnected(true);
                console.log('Connected:' + frame);
                stompClient.subscribe('/topic/getResponse', function (response) {
                    showResponse(JSON.parse(response.body).responseMessage);
                })
            });
        }
        function disconnect() {
            if (stompClient != null) {
                stompClient.disconnect();
            }
            setConnected(false);
            console.log('Disconnected');
        }
        function sendName() {
            var name = $('#name').val();
            console.log('name:' + name);
            stompClient.send("/welcome", {}, JSON.stringify({'name': name}));
        }
        function showResponse(message) {
            $("#response").html(message);
        }
    </script>
    </body>
    </html>
    

    这里虽然代码略多,但是仔细分析一下却也很简单。首先js文件引入的那一部分我就不再多说,这里如果又不理解的可以参考使用Spring Boot开发Web项目。然后我们的页面上先有两个按钮,一个是连接,一个是断开连接,两个按钮分别对应不同的点击事件,在这两个按钮下方有一个输入框,就是我们要发送的内容,然后还有一个发送按钮,发送按钮对应了一个发送消息的点击事件。这是整个页面的元素,很简单,我们这里重点来看一下js逻辑代码。connect方法是当我点击连接按钮的时候执行的,var socket = new SockJS('/endpointSang');表示连接的SockJS的endpoint名称为/endpointSang,stompClient = Stomp.over(socket);表示使用STOMP来创建WebSocket客户端。然后调用stompClient中的connect方法来连接服务端,连接成功之后调用setConnected方法,该隐藏的隐藏,该显示的显示。然后再通过调用stompClient中的subscribe方法来订阅/topic/getResponse发送来的消息,也就是我们在Controller中的say方法上添加的@SendTo注解的参数。stompClient中的send方法表示发送一条消息到服务端,其他的都是常规的js用法我就不再赘述。
    #配置viewController
    接下来就是要为ws.html提供路径映射:

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/ws").setViewName("/ws");
        }
    }
    

    OK,做完这一切之后我们就可以运行项目了,我同时打开多个浏览器,然后在其中一个上发送消息,我们来看看结果:

    这里写图片描述

    我在最上面的浏览器上发送消息,其他两个浏览器都能收到我的消息。

    OK ,以上就是我们在Spring Boot框架下使用WebSocket实现消息推送的全过程。

    本案例下载地址:
    本案例GitHub地址

    以上。

    参考资料:
    《JavaEE开发的颠覆者 Spring Boot实战》第七章

    展开全文
  • 基于消息推送的聊天工具

    千次下载 热门讨论 2013-06-08 15:20:46
    本应用是基于百度云推送的一款轻量级聊天工具,包含多个开源项目库,同时本代码也已经开源,欢迎访问我的博客主页:http://blog.csdn.net/weidi1989,由于时间仓促,错误与疏忽之处在所难免,希望各位朋友们以邮件的...
  • 最近公司需要 Android 的消息推送,在网上找了很多消息推送的例子,都是无法运行. 经过一段时间的研究,终于把例子运行起来了。现在共享出来,共同学习。 在 androidpn 的官网下载...

    客户端、服务器端程序搭建

    最近公司需要 Android 的消息推送,在网上找了很多消息推送的例子,都是无法运行.

    经过一段时间的研究,终于把例子运行起来了。现在共享出来,共同学习。

    在 androidpn 的官网下载(http://sourceforge.net/projects/androidpn/files/),也可以下载我已经调好的程序。

    现在把源码共享给大家,http://download.csdn.net/detail/johnny901114/4410546

    在下载的文件里面在 bin 目录下有 run.bat 文件直接双击即可运行。然后在浏览器里面输入 http://127.0.0.1:7070 即可

    如果在 eclipse 中运行了客户端即可在服务器端看到,这个很简单,不是本文的重点。

    现在主要的就是把下载后的的服务器端源码搭建起来,然后部署到 myeclipse 中运行

    需要注意的是我的这个源码使用数据库是 MySql,所以读者的 pc 机上需要安装 MySql 数据库,关于数据这里就不多说了。

    当然最好能够懂点 Spring 和 Hibernate,这样的话改的时候更加顺手。

    但是可能还有不懂 Hibernate 的人,为了能够让他很好的运行,这里就简单的说一下了:

    首先打开jdbc.properties:

    # JDBC Configuration
    jdbcDriverClassName=com.mysql.jdbc.Driver
    jdbcUrl=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
    hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    jdbcUsername=root
    jdbcPassword=
    # DBCP Pool settings
    jdbcInitialSize=5
    jdbcMaxActive=10
    jdbcMaxIdle=5
    jdbcMaxWait=30000
    
    jdbcValidationQuery=select 1
    • jdbcDriverClassName:表示数据库驱动的类名
    • jdbcUrl:表示连接数据库的 url,其中 test 是数据库的名称
    • hibernate.dialect: 数据库方言
    • jdbcUsername和jdbcPassword:mysql的用户名和密码

    其他的就不多说了.

    如果没有以外的话,服务器启动成功后,可以在浏览器里输入: http://localhost:8080/ ,就可以出现如下界面:


    然后,运行客户端代码,需要注意的是把 androidpn.properties 中的 xmppHost 改为你的局域网 ip 地址.

    运行如下图所示:


    然后在浏览器中的 Users 界面可以看到手机与服务器之间的连接。如下图所示:


    然后在 Notifications 界面可以发送消息给客户端:


    在客户端就收到了通知:


    其中通知里面的内容就是网页中 message 输入的内容。ok按钮就是网页中 uri 的内容。

    最后还有一个问题当我们服务器端重启的时候,客户端就无法在连接到服务器了,除非把 android 后台的服务关掉,然后重启才行。在 XmmpManager 中加上如下代码就可:

    private void addTask(Runnable runnable) {
        Log.d(LOGTAG, "addTask(runnable)...");
        taskTracker.increase();
        synchronized (taskList) {
          if (taskList.isEmpty() && !running) {
            running = true;
            futureTask = taskSubmitter.submit(runnable);
            if (futureTask == null) {
              taskTracker.decrease();
            }
          } else {
              //解决服务器端重启后,客户端不能成功连接androidpn服务器
              runTask();
         
            taskList.add(runnable);
          }
        }
        Log.d(LOGTAG, "addTask(runnable)... done");
    }

     

    后续(一) 2012-8-10

    今天公司终于把 Androidpn 服务器端部署到服务器端了,终于真正的上线了。

    大体步骤如下:

    1)把服务器的程序通过 myeclipse 导出 war 包,然后访问 tomcat 首页,把war包上传到 tomcat 服务器.


    点击 Tomcat Manager 出现如下界面:

    https://img-my.csdn.net/uploads/201208/10/1344562016_9896.png


    在默认的情况下登录不成功,需要在 tomcat-user.xml 文件中配置,在该文件的加上如下配置:

    <role rolename="manager-gui"/>
    <user username="tomcat" password="tomcat" roles="manager-gui"/>

    然后通过如下界面把 war 包上传到 Tomcat 上:

    https://img-my.csdn.net/uploads/201208/10/1344562145_4642.png

    注意需要在服务器电脑上有相应数据库(我这个里是 mysql),并且有 Androidpn 对应的数据库(我这里的数据库名为test).

    并且还要注意数据库的用户名和密码。

     

    2)假设服务器端已经能够访问了,需要把客户端的 androidpn.properties 文件的 xmppHost 的值改成你服务器端的主机名称,假设你的服务器端访问地址为:http://push.android.net:8080/ ,那么把 xmppHost 的值改成 push.android.net

     

    3)注意把你的 8080 端口和 5222 端口打开.


    后续(二)关于Androidpn的一些问题(2012.8.16)

    1,如果把客户端的随机生成的 UUID 代码,改成把设备的 id 或者 mac(device/mac) 作为用户名,会出现重复插入的错误.

    2,把客户端的数据清除(或者重新安装),那么 sharedPre 里的数据也会没有,然而服务器端又有我们手机的设备id,然后启动程序又会出现重复插入的问题.

    所以解决方案为,在服务器端保存用户的时候,检查数据时候存在该用户.

    因为在客户端来说自己有没有注册到服务器端,通过 SharedPreferences 里面是否存在 username 和 password.

     

    后续(三)关于 Android 推送的其他实现方式(2013.1.4)

    其他的推送方案 :

    1) 如果想要方便成本又低,推荐使用极光推送,只要集成它的官方SDK即可 . 在国内值比较出名的 , 推送文本是免费的 , 还可以推送媒体(收费) , 官网为 http://www.jpush.cn/

    2) Android 官网最新提供的 GCM ,是用来代替的 C2DM ,其官网为 http://developer.android.com/google/gcm/index.html

    3) 可以通过 Java nio 来实现自己的服务器,可以研究下 apache 的项目 mina 该项目就是封装 Java NIO 的。

    4) 当可以使用 XMPP 协议来实现推送的. 自己也曾写过简单的一对一即时聊天软件.

    5)也可以通过 MQTT 协议来实现推送 .

          客户端下载地址 : https://github.com/tokudu/AndroidPushNotificationsDemo

          服务器下载地址 : https://github.com/tokudu/PhpMQTTClient

    更多关于MQTT的讲解:Android 消息推送(二)基于 MQTT 协议实现的推送功能

    展开全文
  • 基于dwr的消息推送java web

    万次阅读 2020-09-27 09:10:49
    pom.xml 加依赖 <!-- https://mvnrepository.com/artifact/org.directwebremoting/dwr --> <dependency> <groupId>org.directwebremoting</groupId> <...3.0.0-RE..
  • Android消息推送:第三方消息推送平台详细解析

    万次阅读 多人点赞 2016-10-19 19:33:50
    消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传、资讯类产品进行新闻推送等等,如下图: 本文将介绍Android中实现消息推送的第三方推送的详细解决方案 阅读本文前,建议先阅读我的写...
  • 最近需要开发微信和小程序的推送功能,需要用java后台实现推送,自己本身java和小程序都做,所以就自己动手实现下小...我的这个是跑腿抢单推送,当用户新下单时,会给跑腿员推送消息。 下面开始讲解实现步骤 ...
  • 在Android开发中,消息推送功能的使用非常常见。为了降低开发成本,使用第三方推送是现今较为流行的解决方案。 今天,我将手把手教大家如何在你的应用里集成小米推送 该文档基于小米推送官方Demo,并给出简易推送...
  • MQTT C Client实现消息推送(入门指南)

    万次阅读 多人点赞 2017-05-01 14:26:25
    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,通过MQTT协议,...随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献。
  • 酷炫MQTT实现消息推送

    万次阅读 热门讨论 2017-06-24 22:50:38
    首先在实现本功能之前我们需要储备一下预备知识,大家可以看我的前两篇文章以及官网,了解MQTT的基本常识: MQTT入门篇 MQTT服务器Mosquitto安装及使用 MQTT官网 在步入正题之前先给大家发放个福利,介绍一款MQTT...
  • 微信小程序 消息推送功能实现详解

    万次阅读 热门讨论 2018-09-05 19:30:57
    比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服功能,这个时候微信提供了消息推送功能,在小程序后台的设置,开发设置中,消息推送功能: 点击开启消息推送功能,认证成功...
  • 文档中关于消息推送的部分说到了可以通过定义继承自BmobInstallation的JavaBean来为BmobInstallation对象添加更多的属性,用来定制更通用的推送。我在代码中自定义了一个MyBmobInstallation继承自BmobInstallation,...
  • 安卓版本的~~~极光推送的portal消息推送实现了~现在主要是想通过调用远程api来实现消息推送。是在phonegap下~哪位大神做过么?能给个demo?或者贴个代码??
  • WebSocket实现消息推送

    万次阅读 2018-10-26 22:38:35
    最近项目中需要实现消息推送需求,首先想到就是用webscket来实现IM,之前了解过这个东西,但是很久没有用了,所以需要来弄个demo热热身,这样在项目中使用的时候,会更靠谱些。先来看一下最后的效果: 一、...
  • dwr消息推送

    千次阅读 2014-09-10 10:06:08
    在做jsp系统时,有时候会有群发消息或及时推送消息的功能,如果用ajax请求,设置settimeout不断的请求服务器会给浏览器造成很大的压力,这时就可以用dwr技术进行消息推送。dwr根据自身的机制及时推送消息,不需要...
  • 极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。
  • 请教各位大牛,一个消息推送平台的技术选型。 现在想做一个由各个应用(假设名字为A系统、B系统、C系统,都是独立的java Web系统)共用的消息推送平台,把各个系统中的消息通知推送到A、B、C系统的用户端。A、B、C...
  • H5+个推实现消息推送服务

    万次阅读 2016-10-20 18:41:15
    网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息。 首先,在个注册个账号,开发阶段使用个人注册即可,个推注册地址 注册完进入配置页面,对应用...
  • 最近在做关于任务节点的消息推送,流程到达任务节点时推送任务名称,任务开始时间,任务当前审批人等信息,任务节点被办结后推送任务名称,审批人,办结日期等信息。 尝试使用任务监听器去实现,但是发现监听器...
  • 在前面一篇文章中了解到了目前钉钉群机器人推送消息的几种格式,这篇文章以实际的使用示例来演示使用方法
  • 我们的手机,每天只要数据开了,一些应用都会有每天的及时推送,告诉我们最新的消息,提醒我们版本的更新,那么这个技术点就是使用了通知机制的通知栏框架,它使用于交互事件的通知,它是位于顶层可以展开的通知列表...
  • IOS开发之实现App消息推送(最新)

    万次阅读 多人点赞 2014-11-19 21:13:10
    今天就由本菜鸟给大家做一个简单的IOSApp消息推送教程吧!一切从0开始,包括XCode6, IOS8, 以及苹果开发者中心最新如何注册应用,申请证书以及下载配置概要文件,相信很多刚开始接触ios的人会很想了解一下。(ps:...
  • springboot如何集成mqtt消息推送

    万次阅读 热门讨论 2018-06-04 16:12:16
    1.需求分析 近期笔者项目需要用到mqtt实现消息推送,笔者选择emq作为mqtt服务器载体,上篇笔者讲解了如何在linux中安装mqtt服务,安装链接:https://blog.csdn.net/zhangxing52077/article/details/80567270,接下来...
  • 今天下午看了《见证Android消息推送时刻》,决定按照视频所讲演示一遍,作为笔记,一方面供自己翻看查阅,另一方面供大家学习交流。 Android消息推送系列之Android消息推送 参考文档:   Android消息推送  ...
  • 最近遇到的问题,仅仅贴出来我的解决办法 问题(开发环境下) 我的原因Apple Dev Center中的开发者provisioning file无效了,重新生成了一个就OK。选择iOS App Development然后一步步生成一个,下载到本地,双击...
  • 目录 研究一种技术,习惯于先下载demo,然后运行起来,再深入研究这门新技术。今天突然察觉到自己有个习惯就是必须要让,demo能正常运行起来,然后再去看官网api才能看进去看懂,明明是相同的代码,相同的api文档。...

空空如也

1 2 3 4 5 ... 20
收藏数 22,503
精华内容 9,001
关键字:

消息推送