对于项目,我需要许多客户订阅不同的硬件设备。在此设置中,客户端是iOS - 设备。硬件就像一个覆盆子pi,但我不认为这很重要。如果硬件设备测量某种信息,则它会发送信号。这是一个罕见的事件,可能永远不会发生。
应用程序的目的是在某些事件出现在他感兴趣的位置时警告用户。
我计划使用MQTT协议实现这一点。
这就是我的问题所在。要使用MQTT,即使应用程序处于后台,应用程序也需要每隔几分钟发送一次PINGREQ。该应用程序还需要接收订阅并立即处理它们。
这是我打算做的事情:
..如here所述
我的问题是:Apple会允许吗?我的应用程序不是VoIP应用程序。如果不是,这种方法还有其他选择吗?
答案 0 :(得分:2)
如果Apple政策不允许您在后台运行您的MQTT客户端应用程序,那么解决方案应该是实现额外的推送服务。
推送服务订阅您的MQTT代理并向您的移动设备发送推送通知,以便他们运行或不运行MQTT客户端应用程序,他们将获得事件。
答案 1 :(得分:0)
是的! 当您使用VOIP时(即使您的应用程序不是VOIP应用程序),苹果有可能拒绝您的应用程序,以保持应用程序的活力! 我正在使用位置服务,这是一种在后台模式下保持应用程序活跃的正确解决方案。
即使应用程序处于后台模式&在获得允许回拨后,将您的位置管理员所需的准确度设置为最差,距离过滤器为99999(表示如果用户从上次位置更新回拨中超过99999米,将通知您的应用)
通过改变所需的精度和距离滤波器,您可以节省用户的电池消耗,否则您的应用会耗费大量能源
这是让您的应用程序在后台连续运行超过2天的正确方法(已在我们的项目中使用)。
HTH!享受编码乐趣:)。