我正在尝试通过MQTT-Client-Framework连接到我们的推送服务器。
连接到服务器没有复杂性,只需几行代码即可连接到服务器并订阅主题。
但我有一些问题,我找不到任何直接答案。
1)如何让我的客户端在后台运行?
2)设备重启后会发生什么?设备重启后如何自动连接服务器?
3)假设我在连接服务器时遇到错误。这个库是否会尝试连接循环?尝试多少次?或者我需要自己管理?
4)订阅主题的相同3场景?
答案 0 :(得分:3)
根据我对MQTT客户端框架的经验,以下是您的问题/查询的答案。我希望它能澄清您的担忧并帮助您继续前进。
1)如何让我的客户端在后台运行?
2)设备重启后会发生什么?设备重启后如何自动连接服务器?
AppDelegate
3)假设我在连接服务器时遇到错误。这个库是否会尝试连接循环?尝试多少次?或者我需要自己管理?
如果您的MQTT客户端无法连接您的服务器,您需要自己处理它,库不会尝试自动连接,如前面的答案所述。我编写了如下示例代码。使用NSTimer
自动连接服务器。
[self.mqttSession connectToHost:MQTT_HOST port:MQTT_PORT usingSSL:NO connectHandler:^(NSError *error)
{
if(error)
{
// Application fail to connect to server, write your code to auto connect here
}
}];
4)订阅主题的相同3场景?
否则,每次成功连接时都需要订阅相同的主题。使用以下MQTTSessionDelegate
方法进行订阅。
- (void)connected:(MQTTSession *)session
快乐编码:)
答案 1 :(得分:1)
1)项目 - >能力 - >背景模式。有一些选项可以让您的应用在后台运行。
2)一般来说,如果允许你的应用程序在后台运行,MQTT将不会与服务器断开连接,但我认为你最好检查连接,并在应用程序变为活动状态时重新连接MQTT到你的服务器试。
AppDelegate-> - (void)applicationDidBecomeActive:(UIApplication *)application;
3)不幸的是,是的,它会。你必须自己管理。
4)我无能为力。
答案 2 :(得分:0)
关于你的第一个问题:
可以在here找到有关如何在iOS后台运行的详细信息。此链接还列出了Apple允许在后台运行的操作,如果您的应用程序不符合这些条件,那么Apple可能会将其从应用程序商店中抛出。
该列表还显示要放在Info.plist中的UIBackgroundMode,以标记您的应用需要后台访问权限。
其他3我无法帮助