在Android中使用MQTT的基本步骤

43

我是Android的新手,想要使用MQTT作为从服务器向Android推送通知的方式。

我已经了解了MQTT,但是我并不是很理解它。如果有人使用过这个库,请告诉我该怎么做才能开始使用它。

我有一个Java服务器(运行在Windows上)和许多客户端(安装了我的应用程序的Android手机)。我的服务器将随时向所有或某些特定客户端发送消息。

我的基本要求是什么?是否有:

  1. 服务器要求?
  2. 某种形式的注册?
  3. 在Android中包含的库?
  4. Android设备的标识符?(因为C2DM需要每个设备都有Google帐户)
3个回答

56
您需要:
  1. 一个在服务器端运行的MQTT代理程序。这可以是开源的mosquitto代理程序等。
  2. 一个MQTT客户端库,您将其包含在Android应用程序中,使您的应用程序能够连接、订阅和发布消息。在http://mqtt.org/software上列出了许多Java选项。
  3. 想出一种唯一识别用户或设备的方式,然后使用该方式作为主题,以便您可以向单个设备单独发布消息。
Dale Lane编写了一个不错的指南(http://www.dalelane.co.uk/blog/?p=1599),还有一个关于MQTT的好资源集(https://github.com/mqtt/mqtt.github.io/wiki)。

6
Dale Lane的旧链接已经失效,这里是新链接http://dalelane.co.uk/blog/?p=1599。 - nanospeck
3
如果有人在寻找一个 Android Studio 版本的示例应用程序,我已经在这里制作了一个:https://github.com/bytehala/android-mqtt-quickstart。 - lemuel
1
@lemuel 我来到这里是因为我正在寻找如何编写一个用于 MQTT 的 Android 应用程序。虽然 Dale Lane 的博客解释得很好,但他的示例使用了旧版 IBM MQTT 库,并且应用程序中的许多代码已经过时。真正帮助我的是你的示例应用程序。它非常棒!谢谢。 - eepty
@eepty 哇!谢谢你让我知道。看起来物联网/MQTT正在迅速发展,因为最近访问我的代码库的人数越来越多。 - lemuel

8

基本步骤

  1. 安装带有PHP的WAMP服务器(版本应该大于5.1.0)
  2. 安装完WAMP服务器后,启动WAMP服务器(以获取默认配置)。
  3. 打开命令提示符并将目录更改为PHP {version},

例如:Cd C:\wamp\bin\php\php5.3.0

[1] 安装PEAR

  • 现在我们需要通过运行以下命令来安装PHP PEAR(默认情况下未安装)。

    php -d phar.require_hash=0 ./PEAR/go-pear.phar

    或者

    php -d phar.require_hash=0 go-pear.phar

  • 现在检查C:\wamp\bin\php\php5.3.0\PEAR目录下是否已安装PEAR。

  • 现在,在目录C:\wamp\bin\php\php5.3.0中创建了PEAR_ENV.reg(注册表文件),因此双击它以使用PEAR invironment更改PHP.ini文件

  • 现在,由于已安装梨子,我们必须运行以下命令(可选)。

    pear upgrade

    pear install upgrade-channels

    因此,PEAR设置现已完成

[2] 安装SAM(简单异步消息)

  • 要安装SAM,我们必须运行以下命令

    转到C:\wamp\bin\php\php5.3.0

    Pecl install –B SAM

[3] 选择并运行Mosquitto或RSBM

  • Really Small Message Broker(RSMB)是由IBM提供的简单MQTT代理http://www.alphaworks.ibm.com/tech/rsmb。默认情况下在端口1883上运行。在我们的架构中,它接受来自服务器的消息并将其传递给正确的设备。 RSMB也可以被Mosquitto服务器http://mosquitto.atchoo.org/替换
  • 让我们使用RSMB。
  • 下载并进入rsmb(您的版本)文件夹中的Windows文件夹
  • 启动Broker.exe
现在您的服务器已经配置好了。您可以使用它进行推送通知。

7
如果您想在 Android 设备上使用 MQTT 发送推送通知,那么此示例将是最好的选择。
使用此示例,您可以向您的 Android 设备发送推送通知。
    https://github.com/tokudu/AndroidPushNotificationsDemo

如果你想创建自己的Push服务,比如LEADBOLT、AIRPUSH等,那么你需要以下几点:
1. 配置自己的服务器以发送Push通知(例如在PHP、WAMP中工作的Tokudu)。为了配置服务器: A. 安装PEAR B. 安装SAM C. 配置SAM
2. 选择目标Android设备需要使用Mosquitto或IBM的RSMB。 3. 你需要一些Android代码来接收通知、向服务器发送保持连接信号、与服务器建立连接等(可以在Tokudu示例中找到)。
如果您有任何问题,请告诉我,我一定会帮助您。

谢谢。您能帮我设置和配置消息代理器SAM在Apache服务器中吗? - Viswa
警告:此项目使用先前版本的MQTT,它可以正常工作,但不提供身份验证(用户名/密码)的功能。 - Paulo Henrique Nonaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接