簡體   English   中英

使iOS App保持活動狀態以使用MQTT協議

[英]Keep iOS App alive to work with MQTT protocol

對於一個項目,我需要許多客戶訂閱不同的硬件設備。 在此設置中,客戶端是iOS - 設備。 硬件就像一個覆盆子pi,但我不認為這很重要。 如果硬件設備測量某種信息,則它會發送信號。 這是一種罕見的事件,可能永遠不會發生。

應用程序的目的是在某些事件出現在他感興趣的位置時警告用戶。

我計划使用MQTT協議實現這一點。

這就是我的問題所在。 要使用MQTT,即使應用程序處於后台,應用程序也需要每隔幾分鍾發送一次PINGREQ。 該應用程序還需要接收其訂閱並立即處理它們。

這就是我打算做的事情:

  1. 將Info.plist中的“UIBackgroundModes”鍵設置為“voip”。
  2. 將套接字標記為voip套接字以在收到某些內容時喚醒應用
  3. 設置keepAliveTimer:callback:並發送PINGREQ

..描述這里

我的問題是:Apple會允許嗎? 我的應用程序不是VoIP應用程序。 如果不是,這種方法還有其他選擇嗎?

如果Apple策略不允許您在后台運行MQTT客戶端應用程序,那么解決方案應該是實現額外的推送服務。

推送服務訂閱您的MQTT代理並向您的移動設備發送推送通知,以便他們運行或不運行MQTT客戶端應用程序,他們將獲得事件。

是! 當您使用VOIP時(即使您的應用程序不是VOIP應用程序),蘋果有可能拒絕您的應用程序,以保持應用程序的活力! 我正在使用位置服務,這是一種在后台模式下保持應用程序活躍的正確解決方案。

即使應用程序處於后台模式並且在獲得允許回撥后,請求權限使用位置服務,將您的位置管理器所需的准確度設置為最差,距離過濾器為99999(意味着如果用戶距離超過99999米,您的應用程序將會收到通知最后的位置更新回電)

通過改變所需的精度和距離濾波器,您可以節省用戶的電池消耗,否則您的應用程序將消耗大量能源

這是一種使您的應用程序在后台連續運行超過2天的正確方法(已在我們的項目中使用)。

HTH! 在編碼中玩得開心:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM