如何实现服务器给android客户端主动推送消息
一、消息推送基础
消息推送,就是在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息
当我们开发需要和服务器交互的移动应用时,基本上都需要和服务器进行交互,包括上传数据到服务器,同时从服务器上获取数据。
一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。
如何使客户端能够实时的收到服务器的消息和通知,总体来说有两种方式,第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。
虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。因为Pull方式更费客户端的网络流量,更主要的是费电量,还需要我们的程序不停地去监测服务端的变化。
二、几种常见的解决方案实现原理
1)轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。
2)SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。
3)持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。
三、消息推送解决方案概述
A、C2DM云端推送方案
在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务。Android Cloud to Device Messaging (C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。
该方案存在的主要问题是C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用。
B、MQTT协议实现Android推送
采用MQTT协议实现Android推送功能也是一种解决方案。MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。
wmqttjar 是IBM提供的MQTT协议的实现。我们可以从这里(https://githubcom/tokudu/AndroidPushNotificationsDemo)下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现(https://githubcom/tokudu/PhpMQTTClient)。
C、RSMB实现推送功能
Really Small Message Broker (RSMB) ,是一个简单的MQTT代理,同样由IBM提供,其查看地址是:http://wwwalphaworksibmcom/tech/rsmb。缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备。SAM是一个针对MQTT写的PHP库。我们可以从这个http://peclphpnet/package/sam/download/020地址下载它
D、XMPP协议实现Android推送
Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。
androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。但也存在一些不足之处:
1) 比如时间过长时,就再也收不到推送的信息了。
2)性能上也不够稳定。
3)如果将消息从服务器上推送出去,就不再管理了,不管消息是否成功到达客户端手机上。
如果我们要使用androidpn,则还需要做大量的工作,需要理解XMPP协议、理解Androidpn的实现机制,需要调试内部存在的BUG。
E、使用第三方平台
目前国内、国外有一些推送平台可供使用,但是涉及到收费问题、保密问题、服务质量问题、扩展问题等等,又不得不是我们望而却步。
四、消息推送完美方案
综合以上论述,在建立Android消息推送方面可谓方案多多,但每一款方案都有其优缺点。但无论如何,还是自己搭建一个推送平台是上策。因为你有、他有不如自己有。
举个例子,在搭建自有推送平台上建议使用《某某Android消息推送组件》。该组不仅可以拿来即用,并且还可以提供源码以便扩展,实现自己的特殊需求。
A、推送原理
Android消息推送组件基于XMPP协议实现Android推送。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。
目前主流的php服务器端架构是linux+nginx+php-fpm。
linux的选择可以是centos,ubuntuserver,debian都可以,如果安装比较新的版本。
nginx也安装最新稳定版本。
php如果是新项目建议php7以上的版本。一般公司选在php部署方案的时候会现在自己编译一个可用版本,这样子可用把相关需要的php拓展一次装好,
相关的配置想也都预先配好,在部署的时候只需要做一次文件拷贝。
在windows下安装apache+php+mysql
从各官方网站下了APACHE2050、PHP5、MYSQL4020、PHPMYADMIN257
apache_2050-win32-x86-no_sslmsi
php-500-Win32zip
mysql-4020d-winzip
phpMyAdmin-257zip
系统win2003系统盘为:D盘
第一步:安装apache并配置支持PHP
点击安装文件apache_2050-win32-x86-no_sslmsi
将apache安装在D:apache2目录(随自己喜好)下
将php-500-Win32zip里内容解压到D:php里
找到php目录里的phpini-dist重命名为phpini并拷到windows目录里(win2k里为winnt)
如我的phpini是拷到D:windows目录
再将php目录里的php5tsdll,libmysqldll拷到系统目录(system/system32)如我的是D:windowssystem里
配置apache里的httpdconf
打开D:Apache2confhttpdconf这个文件
找到AddDefaultCharsetISO-8859-1将其改为AddDefaultCharsetGB2312(让默认语言编码为简体中文)
找到DocumentRoot"D:/Apache2/htdocs"将其改为你的WEB目录(可不改)如我的为DocumentRoot"D:/website"
找到DirectoryIndexindexhtmlindexhtmlvar在后面加入indexhtmindexphp
选择安装模式:模块化模式安装或CGI模式安装(选一样即可)
--------------模块化安装配置------------------------------------
找到#LoadModulessl_modulemodules/mod_sslso这行,在此行后加入一行
LoadModulephp5_moduled:/php/php5apache2dll
其中d:/php/php5apache2dll为你php目录中php5apache2dll所在的位置
找到AddTypeapplication/x-gzipgztgz这行,在此行后加入一行
AddTypeapplication/x-httpd-phpphp
---------------------------------------------------------------
--------------CGI安装配置--------------------------------------
找到AddTypeapplication/x-gzipgztgz这行,加入如下即可
ScriptAlias/php/"d:/php/"
AddTypeapplication/x-httpd-phpphp
Actionapplication/x-httpd-php"/php/php-cgiexe"
---------------------------------------------------------------
此时PHP环境基本已经配置成功
在WEB根目录(如我的D:website)里建一个名为testphp的文件内容如下
<echophpinfo();>
重新启动apache服务
用浏览器打开testphp
如果可以看到php配置输出信息就OK了
告诉你,这是可以实现的。
先去google市场搜索paw server下载,安装完,打开主页,然后下载一个php的插件,安装完就可以用了。不过数据库是SQLite的,不是MYSQL。
订阅
作为程序员的你,常用的软件有哪些?现在的公司,在招聘程序员时,对程序员的要求特别高——恨不得这个程序员什么都会。为了能够应聘上一个好的职位,我们就要掌握非常多的编程技术。我就曾经学习了好多编程方面的东西,如:PHP、C++、CSS、HTML、JS、Vue、安卓开发、微信小程序等等,在开发的时候,我会使用到很多的软件。
一、sublime text。
sublime是我开发PHP程序时,最喜欢用的编程软件。它非常的小巧,但功能却非常的强大。我们可以给sublime安装非常好用的插件,比如:emmet插件,安装好emmet插件后,我们的编写代码的速度可以大副提升,只需要输入html:5,就会显示html5网页的主要标签代码(如下图)。
二、wampserver。
开发PHP程序时,我们一般都会在本地电脑上安装一个PHP的环境,然后,再在这个PHP环境下开发PHP程序,这样的好处,可以随时编写程序,随时做到很好的测试。在windows电脑上,PHP环境的软件还是很多的,我通常使用的是wampserver这个PHP集成环境软件。wampserver这个软件,集成了PHP、apache服务器、mysql数据库,这些都是我们开发PHP程序所必须。
三、flashfap。
在我们开发好PHP网站程序,在本地测试完成后,我们都是需要把这个PHP程序上传到真正的网站服务器上去的,这个时候,我们就需要一个上传工具。很多的网站,我们都是使用的虚拟主机,这个时候,我们就需要用到FTP上传工具,我使用最多的FTP上传工具就是flashfap,通过它,我们可以把PHP程序的文件全部传输到虚拟主机上。
四、xshell。
我的网站是存放在一个云服务器上,而且这个云服务器的系统是linux系统,要想管理这个云服务器,我们就要借助一个远程终端工具来进行连接。我最喜欢用的远程终端工具就是xshell,只需要简单的设置,就可以正常使用。我们在使用xshell工具时,可以直接使用windows的复制、粘贴等快捷键,非常方便。
五、wordpress。
wordpress是一个PHP网站程序,可以通过它,就可以快速搭建一个PHP网站。我的网站“码 不停蹄”就是用这个wordpress程序搭建的。我们只需要在安装好wordpress后,再安装一个好用的主题模板,就可以轻松拥有我们自己的个人网站了。wordpress是全球使用最多的网站程序,尤其是个人网站,wordpress绝对是他们的首先。
六、VMware虚拟机。
网站服务器的选择上,绝大多数的站长会选择linux系统的服务器,因为linux系统占用资源少、速度快。这样一来,就需要我们熟悉linux系统,而我们电脑通常都是安装的windows系统,怎么学习linux呢?可以用虚拟机呀。我使用的虚拟机就是VMware,比windows系统自带的虚拟机好用多,可以在vmware虚拟机里安装windows、linux、mac、dos等多种系统,这样一来,我们就可以在windows系统上直接学习linux或mac系统了。
七、android studio。
现在安卓手机市场份额非常高,全球智能手机市场中占比达到80%左右,所以,很多公司都在招聘安卓软件开发人员,而且工资都非常高。在学习安卓软件开发的过程中,我使用最多的是谷歌公司提供的android studio,这款开发工具非常强大,我们可以一边编写代码,一边查看虚拟手机上的适配情况。
八、dreamweaver。
在PHP网站程序开发过程中,一般情况下,我们要先开发网站的前端页面,也就是html静态代码。这个时候,dreamweaver最一个非常不错的选择。在编写html5代码的时候,我们可以通过dreamweaver轻松添加网页元素,如:音乐、视频、等,非常方便,可以大提升网页开发速度。
以上就是我常用到的软件,个个都是经典,相信很多的程序员跟我一样,也会用到其中的几个。当然,现在编程方面的软件太多了,各有各的优势,选择哪一个,还是要根据自己的使用习惯来定,在不断的磨合中,慢慢找到最适合自己的那几款。
要创建、运行和调试 PHP 项目,需要以下软件:
用于PHP的NetBeans IDE。推荐使用PHPstorm。
Web服务器。通常,开发和调试都是在本地 Web 服务器上执行,而生产环境位于远程 Web 服务器上。当前版本允许使用本地服务器。未来版本将支持通过 FTP 访问使用远程服务器。PHP 支持可以添加到许多 Web 服务器(IIS、Xitami 等)上,但最常用的是 Apache HTTP 服务器。
PHP引擎。支持的版本是 PHP5。
PHP调试器。用于PHP的NetBeans IDE使您能够使用XDebug,但使用调试器是可选的。推荐版本为XDebug 20或更高版本,因为它与 PHP5兼容。
数据库服务器。您可以使用多种数据库服务器,而最受欢迎的一种是 MySQL 服务器。
安装之后,需要设置环境,使所有软件组件可以彼此之间正常配合工作。
您可以使用其中包含所需软件的包或单独安装每个组件。
集成环境推荐使用PHPstudy。
phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,
无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。绿色环境,解压
就能用,切换版本相当方便,应该是精简过的,因为软件体积相当的小,小体积下载方便使用。
0条评论