我正在使用location
背景模式跟蹤user visits,然後將一些數據發送到我的服務器的iOS應用程序。但是,我遇到了一些奇怪的網絡通信問題。 唯一的症狀是並非所有收集的數據都發送到服務器。在iOS背景模式下調試網絡通信
下面是對這個問題的詳細信息:
- 我的服務器,使接收到的一切的日誌。沒有服務器端錯誤,並且每個客戶端請求都已成功記錄。
客戶端應用程序在調用
locationManager:didVisit:
方法時創建本地通知。當您到達並離開某個位置時,此通知按預期顯示。然後,它通過HTTPS調用服務器併發布另一個通知,該通知不會每次都出現。整個設置是這樣的:// This code is executed from locationManager:didVisit: when the app is in background. let myVisit: CLVisit! = ... // the received visit self.postLocalNotification("Visit received!", visit: myVisit) let task = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler(nil) Alamofire.request(.POST, apiMethod("visit"), parameters: params, encoding: .JSON) .responseJSON { (request, response, JSON, error) in // This gets executed only some time, wtf? self.postLocalNotification("Visit reported!", visit: myVisit) UIApplication.sharedApplication().endBackgroundTask(task) }
因此,我得出結論:我做錯了,但我看不出什麼。我檢查了the article on background app execution,我的應用似乎符合它。還有什麼我可以錯過?
我的應用程序已經註冊了'location'背景模式。這應該就夠了,對吧?順便說一句,我認爲beginBackgroundTask是任何後臺任務的要求,無論應用程序是否使用完整的後臺模式,我會糾正。 –
試着用這些後臺任務運行你的應用程序,讓我們知道它是如何工作的。 – jaybers
會做;有沒有一種有效的方法來調試呢?等待下一個'didVisit'事件似乎並不方便 –