Paho MQTT Android 服务唤醒 activity
Paho MQTT Android service wake up activity
我正在尝试使用 Paho Android MQTT 库 (downloaded from here)。
示例 service application 工作正常,subscribe 和 publish 方法在示例应用程序时也工作正常是 运行。当我关闭它时,设备不再接收消息通知。
有没有人知道如何 modify/implement 即使应用程序不是 运行 服务也能正确接收消息?
您应该实施后台服务,请参阅:
http://developer.android.com/training/run-background-service/index.html
或者根据用例,您可以在服务器端实现推送通知,并在客户端未订阅 MQTT 代理时接收它们。
Mqtt 服务在某种程度上比一般服务更像是库。它只是连接给定的代理并通过您的应用程序订阅指定的主题。 stock MqttAndroid服务在Android OS.
启动后完全不知道broker和topic
因此,正确的方法是为您的应用程序提供后端服务,该服务知道有关代理和主题的详细信息。您的服务负责在适当的时间[重新]连接 Mqtt 代理和订阅主题。
据我了解,Paho 主题可以满足您的所有需求。在我的应用程序中,paho mqtt-service 在我需要它之前永远不会停止。
我使用以下代码段将清单中的 Paho 服务注册到 Android。
‹!-- Mqtt Service --›
‹service android:name="com.ibm.android.service.MqttService" /›
这应该可以解决问题。
http://www.eclipse.org/paho/files/android-javadoc/index.html
的描述中有更多信息
Paho 的 Android 图书馆工作正常。一旦应用程序进入后台,就很难保持连接状态。要提供任何其他功能,如存储连接选项,在后台状态期间 pub/sub 的主题将需要在库级别进行一些重写。
我的观察:-
建立连接后,MqttService 会保持连接处于活动状态,即使应用程序进入后台也是如此。除非系统的服务管理器终止应用程序及其服务。这一切都是可能的,除非网络保持不间断。
该服务有自己的警报管理器来保持自身活动。
我做了一个实验,并提出了一个小的解决方案,可以帮助在整个应用程序的活动中保持连接对象的可访问性。除非你掉线了。
PS :- 解决方案非常简单。但它就像一个魅力。
https://github.com/ameykshirsagar/mqttconnectionpersistence
我还没有实现即使在应用程序的 activity 被销毁后 MqttService 仍然存在的实现
如果 'close' 你的意思是 'force stop' 应用程序,那么是的,这将完全停止应用程序并且你不会收到消息(但这可能是用户想要的)。
但是,如果 'close' 你的意思是 user/android 终止应用程序,那么你将不会收到通知,因为你不再是 'connected' 经纪人。
一个解决方案是创建自定义 Service
来管理连接。
查看我的回答 here 以获得对我有用的详细解决方案。
我正在尝试使用 Paho Android MQTT 库 (downloaded from here)。 示例 service application 工作正常,subscribe 和 publish 方法在示例应用程序时也工作正常是 运行。当我关闭它时,设备不再接收消息通知。
有没有人知道如何 modify/implement 即使应用程序不是 运行 服务也能正确接收消息?
您应该实施后台服务,请参阅: http://developer.android.com/training/run-background-service/index.html
或者根据用例,您可以在服务器端实现推送通知,并在客户端未订阅 MQTT 代理时接收它们。
Mqtt 服务在某种程度上比一般服务更像是库。它只是连接给定的代理并通过您的应用程序订阅指定的主题。 stock MqttAndroid服务在Android OS.
启动后完全不知道broker和topic因此,正确的方法是为您的应用程序提供后端服务,该服务知道有关代理和主题的详细信息。您的服务负责在适当的时间[重新]连接 Mqtt 代理和订阅主题。
据我了解,Paho 主题可以满足您的所有需求。在我的应用程序中,paho mqtt-service 在我需要它之前永远不会停止。 我使用以下代码段将清单中的 Paho 服务注册到 Android。
‹!-- Mqtt Service --›
‹service android:name="com.ibm.android.service.MqttService" /›
这应该可以解决问题。
http://www.eclipse.org/paho/files/android-javadoc/index.html
的描述中有更多信息Paho 的 Android 图书馆工作正常。一旦应用程序进入后台,就很难保持连接状态。要提供任何其他功能,如存储连接选项,在后台状态期间 pub/sub 的主题将需要在库级别进行一些重写。
我的观察:-
建立连接后,MqttService 会保持连接处于活动状态,即使应用程序进入后台也是如此。除非系统的服务管理器终止应用程序及其服务。这一切都是可能的,除非网络保持不间断。
该服务有自己的警报管理器来保持自身活动。
我做了一个实验,并提出了一个小的解决方案,可以帮助在整个应用程序的活动中保持连接对象的可访问性。除非你掉线了。
PS :- 解决方案非常简单。但它就像一个魅力。
https://github.com/ameykshirsagar/mqttconnectionpersistence
我还没有实现即使在应用程序的 activity 被销毁后 MqttService 仍然存在的实现
如果 'close' 你的意思是 'force stop' 应用程序,那么是的,这将完全停止应用程序并且你不会收到消息(但这可能是用户想要的)。
但是,如果 'close' 你的意思是 user/android 终止应用程序,那么你将不会收到通知,因为你不再是 'connected' 经纪人。
一个解决方案是创建自定义 Service
来管理连接。
查看我的回答 here 以获得对我有用的详细解决方案。