首先这个在网络上已经有很多示例了,这里我只是写下自己的流程和需要的问题。
代码工具部分:
1. 客户端代码(java):
下载自:https://github.com/tokudu/AndroidPushNotificationsDemo
2. 服务器端代码(php):
下载自:https://github.com/tokudu/PhpMQTTClient
3. RSMB部分
Really Small Message Broker (RSMB) 需要在IBM网站下载。
(附件亦包含下载)
配置部分:
1. 客户端:
a. 因为工程本身是很早的工程,那时ADT还没有要求外部包一定要放在libs下,而这个老工程是这样的。虽然运行时没有问题,但一点start就是crash,提示如下:
引用
09-16 14:48:13.385: E/AndroidRuntime(26083): FATAL EXCEPTION: main
09-16 14:48:13.385: E/AndroidRuntime(26083): java.lang.VerifyError: com/tokudu/demo/PushService
09-16 14:48:13.385: E/AndroidRuntime(26083): at com.tokudu.demo.PushActivity$1.onClick(PushActivity.java:32
...
解决办法只有将jar包放在libs下,并将之前工程对jar包的引用删除(从javabuild path中移除)即可。
b. 还是因为同样的原因,工程本身是很早的工程。那里SDK还没有要求网络请求一定要在非UI线程,而这里连接Push服务器是在Service中并没有在单独的线程。所以可以改进一下,避免ANR。
c. 将工程中的
// the IP address, where your MQTT broker is running.
private static final String MQTT_HOST = "209.124.50.174";
地址改为电脑自已电脑(运行RSMB的电脑)的地址。
2. 服务器部分。
a. 工程环境。
此为PHP代码,所以要求有PHP环境,我系统为MAC也正好装了Brew在同事提点下,我使用了Brew进行安装。
i. brew install php54失败。
ii. brew install josegonzalez/php/php54失败。并提示Please tap it and then try again: brew tap josegonzalez/php
iii. brew tap josegonzalez/php 有用。
iv. brew install josegonzalez/php/php54 再试失败。 并提示Please tap it and then try again: brew tap homebrew/dupes
v. brew tap homebrew/dupese有用。
vi. brew install php54 成功。
因为网络不好,中间多次卡住。果断Ctrl+C, 感谢Brew的断点续传功能。
完成安装后有如下提示:
引用
To enable PHP in Apache add the following to httpd.conf and restart Apache:
LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so
The php.ini file can be found in:
/usr/local/etc/php/5.4/php.ini
✩✩✩✩ PEAR ✩✩✩✩
If PEAR complains about permissions, 'fix' the default PEAR permissions and config:
chmod -R ug+w /usr/local/Cellar/php54/5.4.19/lib/php
pear config-set php_ini /usr/local/etc/php/5.4/php.ini
✩✩✩✩ Extensions ✩✩✩✩
If you are having issues with custom extension compiling, ensure that this php is
in your PATH:
PATH="$(brew --prefix josegonzalez/php/php54)/bin:$PATH"
不过同事说先不管,我也没管。
b. 确认apache状态
在浏览器试了http://localhost.得到it works知道 apache是工作的。
但为了更加确认,在/Library/WebServer/Documents 下新建了一个test.html
在浏览器试http://127.0.0.1/test.html 得到了内容。知道明确apache没有问题,也知道了php代码部署的位置是/Library/WebServer/Documents/下面。
c. 确认php是否可以正常解析
在/Library/WebServer/Documents下写了个新的文件test.php内容为
<?php
phpinfo();
在浏览器中访问http://127.0.0.1/test.php
如得到
引用
<?php
phpinfo();
则php解析不成功。
在同事指导下在
/private/etc/apache2/httpd.conf 中添加了如下行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php .phtml
然后重启了apache
d.重启apache
i. apachectl status 没用所以要重启
ii. ps aux | grep httpd
引用
_www 38667 0.0 0.0 2437464 1708 ?? S 1:06pm 0:00.00 /usr/sbin/httpd
_www 38666 0.0 0.0 2437464 1764 ?? S 1:06pm 0:00.00 /usr/sbin/httpd
_www 38665 0.0 0.0 2437464 1756 ?? S 1:06pm 0:00.00 /usr/sbin/httpd
_www 38664 0.0 0.0 2437464 1792 ?? S 1:05pm 0:00.00 /usr/sbin/httpd
root 38663 0.0 0.0 2437464 2368 ?? Ss 1:05pm 0:00.13 /usr/sbin/httpd
xxxx 38790 0.0 0.0 2432768 596 s002 S+ 1:26pm 0:00.00 grep httpd
得到了当前打开的什么 最后一个是自己打开的。
iii. kill 除自己打开的这个之外的。
sudo kill 38667
sudo kill 38666
sudo kill 38665
sudo kill 38664
sudo kill 38663
iv. sudo apachectl start
v. 在浏览器中再次查看
http://127.0.0.1/test.php
可以看到一个有php信息的页面。
至此php配置结束。
这一步做为客户端程序员个人的确不懂在干嘛。
e. 布置代码。
将代码放在/Library/WebServer/Documents/
3. RSMB部分
1. Mac下则执行 XXXX/rsmb/mac/broker
如果直接将文件拖至终端会不成功。提示CWNAN9989W Could not open message file ../messages/Messages.1.2.0
应该cd至$ XXX/rsmb/mac
$ ./broker
2. 浏览器中打开
http://127.0.0.1/mqtt/index.php 此时可以给手机发Push消息了。
ps: 这里多说一句,也让自己记住。
1. 这里其它没完,只是收消息,没有发消息。
2. 原理不清,大致是服务器部署的代码 发消息给 RSMB。 RSMB用于给手机发消息。通过手机的ID标识手机。
分享到:
相关推荐
在"android-mqtt-push-master"这个压缩包中,可能包含了实现Android MQTT推送服务的源代码、示例、配置文件等资源。通过研究这些文件,开发者可以了解如何将MQTT集成到Android应用中,创建高效且可靠的推送服务。
在Android平台上实现MQTT推送,能够确保消息的可靠传输,即使在网络不稳定的情况下也能保持良好的用户体验。 1. **MQTT协议介绍** MQTT是一种基于发布/订阅模式的“轻量级”通信协议,最初设计用于远程位置和有限...
目前市面上有许多优秀的库可以选择,如`mosquitto-android-client`、`AndroidMQTT`等。 2. **配置MQTT服务器**:搭建或选择一个MQTT服务器,并进行必要的配置,以支持客户端的连接请求。 3. **编写代码连接MQTT...
在Android平台上实现Server Push技术,MQTT(Message Queuing Telemetry Transport)协议是一个常见的选择。MQTT是一个轻量级的发布/订阅模型的网络协议,主要用于低带宽、高延迟或不可靠的网络环境中,特别适合...
adoption of MQTT protocol enables real-time communication between Android client and App Server, solving the difficulty of Android push notification. 在 Android 消息推送通知中,C2DM 是一个重要的角色...
本文将深入探讨如何使用MQTT协议在Android平台上实现推送服务,包括服务端和客户端的代码实现。 一、MQTT协议基础 1. **协议特点**:MQTT设计目标是低开销、低带宽和高可靠性,适用于移动设备和网络条件差的环境。...
在提供的压缩包文件"push-MQTT"中,可能包含了完整的Android MQTT推送服务端和客户端示例代码,以及一个PDF文档,详细解释了如何集成和使用这些示例。阅读并研究这些资源可以帮助你更好地理解和实践Android上的MQTT...
MQTTPush4Android 这是一个简单的 android 项目,用于演示基于 MQTT 的 android 推送通知。 项目有一个空白活动和一个服务。 该服务连接到公共 MQTT 代理并在默认端口 1883 中侦听任何通知。 这是一个公共 MQTT 代理...
Android 平台上实现推送消息服务常常是一项挑战,因为系统本身并未提供一个完美无瑕的解决方案。本文主要探讨了如何在Android应用中实现XMPP(可扩展通讯和表示协议)推送,以及面对不同推送策略的优缺点。 XMPP是...
在Android应用开发中,MQTT客户端库可以帮助开发者实现设备与服务器之间的实时数据交换。本篇文章将围绕"mqtt通讯关键代码"这一主题,详细介绍Android平台上实现MQTT通信的核心步骤。 首先,我们需要集成一个MQTT...
【Android Push Notification 方案比较】 在开发Android应用时,向用户实时推送通知是必不可少的功能,Android提供了多种推送通知方案,包括C2DM(Cloud to Device Messaging)、MQTT(Message Queuing Telemetry ...
mqtt setHost host ; Default mqtt port is 1883 mqtt setPort 1883 ; Set a unique id for this client broker combination mqtt setId client ; Open the connection to the MQTT server mqtt...
PushService Android消息推送实现(多种方案) 1. WebSocket 基于OkHttp( 提供的WebSocket接口实现推送 2. MQTT 基于mqtt( 实现推送 3. Socket 基于 java.net.Socket 长连接实现推送 项目地址:
本文将深入探讨Android Push Notification的实现,以及MQTT(Message Queuing Telemetry Transport)协议在此过程中的角色。 首先,Android Push Notification是一种服务,允许应用程序在不实际运行或者用户没有...
【标题】:“send_mqtt.zip”是一个包含与Android推送服务相关的资源文件的压缩包,主要关注MQTT(Message Queuing Telemetry Transport)协议在实现推送服务中的应用。 【描述】:“Android主流推送方案分析(MQTT...
### Android推送实现方案探讨 #### 背景与概述 随着移动互联网的迅速发展,智能手机已成为人们日常生活中不可或缺的一部分。在此背景下,推送技术作为一种能够实时向用户传递信息的关键技术,在移动应用开发中扮演...
在这个项目“MQTTAndroid客户端AndroidPushNotificationsDemo”中,开发者提供了一个示例,展示了如何在Android平台上实现MQTT客户端,以便接收推送通知。 ** Android Push Notifications ** Android Push ...