![](/img/trans.png)
[英]How to publish or send a message by MQTT client framework when application is in background in iOS Swift
[英]MQTT-Client-Framework stay running at background
我正在嘗試通過MQTT-Client-Framework連接到我們的推送服務器。
連接到服務器沒有復雜性,只需幾行代碼,我就可以連接到服務器並訂閱主題。
但是我有幾個問題,我找不到他們的直接答案。
1)如何使客戶端在后台運行?
2)設備重啟后會怎樣? 設備重啟后如何自動連接服務器?
3)假設我在連接服務器時遇到錯誤。 該庫是否將嘗試循環連接? 嘗試幾次? 還是我需要自己管理?
4)訂閱主題的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)項目->功能->背景模式。 有一些選項可讓您的應用在后台運行。
2)一般來說,如果允許您的應用程序在后台運行,則MQTT不會與服務器斷開連接,但是我認為您最好檢查一下連接,並在應用程序再次變為活動狀態時將MQTT重新連接到服務器。
AppDelegate - (void)applicationDidBecomeActive:(UIApplication *)application;
> - (void)applicationDidBecomeActive:(UIApplication *)application;
3)不幸的是,會的。 而且您必須管理自己。
4)我幫不上忙。
對於第一個問題:
有關如何在iOS上后台運行的詳細信息,請參見此處 。 此鏈接還列出了Apple允許在后台運行的操作,如果您的應用不符合這些條件,則很可能被Apple拋棄了應用商店。
該列表還顯示了將哪些UIBackgroundModes放置在Info.plist中,以標記您的應用需要后台訪問。
其他3個我幫不上忙
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.