我正在尝试使用Paho Android MQTT库(从这里下载)。
示例服务应用程序正常工作,当示例应用程序运行时,订阅和发布方法也正常工作。但是当我关闭它时,设备不再接收消息通知。
有没有人有经验如何正确修改/实现服务以便在应用程序未运行时接收消息?
‹!-- Mqtt Service --›
‹service android:name="com.ibm.android.service.MqttService" /›
Mqtt服务有些类似于库,而不是一般的服务。它只是由您的应用程序连接给定的代理并订阅指定主题。MqttAndroidService库在被Android OS启动后并不知道代理和主题。
因此,正确的方法是为您的应用程序拥有一个后端服务,该服务了解代理和主题的详细信息。您的服务负责在适当的时间重新连接Mqtt代理并订阅主题。
https://github.com/ameykshirsagar/mqttconnectionpersistence
我还没有实现一种方法,使得在应用程序的活动被销毁后 MqttService 仍然保持活动状态。
如果你所说的“关闭”是指“强制停止”应用程序,那么是的,这会完全停止应用程序,你将无法接收到消息(但这可能正是用户想要的)。
然而,如果你所说的“关闭”是指用户/Android杀死应用程序,那么你之所以无法接收通知,是因为你不再与代理服务器“连接”了。
一个解决方案是创建一个自定义Service
来管理连接。
查看我的答案这里,了解我使用的详细解决方案。