概述後臺位置更新
我COMPAGNY要求我釋放,可以檢查該設備的位置,每兩小時的iOS版應用的最佳實踐。應用程序會通過TCP/IP套接字將這些位置數據發送到我的服務器,然後根據這些非常數據(直接並通過相同的TCP/IP套接字)接收相應的信息。所以我不是試圖讓我的應用程序在後臺模式下連續運行(實際上,這似乎是iOS中的熱門話題,也不適合我的項目)。
問題
爲了可靠,什麼是實現這一目標的最佳做法?所以,我想知道:
- 由於我的應用程序被暫停(=無效),並允許蘋果打開一個套接字時,它喚醒通過
didUpdateToLocation
發送位置? - 我需要多長時間通過套接字執行發送/接收任務?
- 我應該使用
beginBackgroundTaskWithExpirationHandler
創建一個真實的後臺任務,並使用Cocoa允許的10分鐘來執行我的發送/接收任務嗎? - 這是可能的(並允許蘋果)要求每2小時10分鐘的後臺任務,沒有人爲干預(即用戶應該重新打開應用程序等)?
我取得了什麼/迄今發現
- 我加入了
location
鑰匙在我Info.plist
能夠運行didUpdateToLocation
處理程序時,我的應用程序是無效的。 - 我能夠通過套接字發送和接收數據,當我的應用程序處於前臺(=活動狀態)時打開了套接字。
- 我試圖在調用
didUpdateToLocation
時檢查backgroundTimeRemaining
。我得到了一個非常大的結果數字,這似乎是正常的,因爲在這一點上,applicationState
不在UIApplicationStateBackground
中,而是在UIApplicationStateActive
中。
這些問題在官方文檔中並不十分清楚,我沒有找到與我的具體案例相關的主題。
感謝您的幫助。
'beginBackgroundTaskWithExpirationHandler'不會創建後臺任務,它會將當前線程標記爲希望在應用程序後臺運行時繼續運行的內容。 – progrmr
@ user1382094:請記住將正確的答案標記爲您的問題的接受答案,以防萬一它幫助您。謝謝! – veducm