我要做到以下幾點:運行的後臺任務iOS中長時間與iBeacons
如果用戶仍然還處於一個CLBeaconRegion
的時間(大約15分鐘)長一段時間,我想能夠執行一段代碼。如果應用程序處於前臺,此問題很簡單,但我無法將後臺時間延長到分配的時間。因爲我正在使用定位服務,所以應該允許運行如此長的後臺任務。
僅在用戶移動時纔在後臺調用didEnterRegion
和didExitRegion
。似乎沒有任何特定於位置的API允許您根據時間進行後臺任務。
確實出現了其他想要達到同樣效果的類似問題,例如提到的所有線程here。然而,這似乎並沒有使提出的解決方案將用於CLBeaconManager
工作(這主要涉及禁用和啓用CLLocationManager
當backgroundTimeRemaining
足夠小,但我的這個解決方案最初嘗試沒有成功)
另一種方式我可以在有限的範圍內做到這一點,即在15分鐘內安排通知,並取消didExitRegion
中的通知。
但是,上面的解決方案感覺哈克或不足。有沒有一種「優雅」的方式來實現我想要的?
我在Info.plist中啓用了位置背景模式。檢查'didEnterRegion'中的'backgroundTimeRemaining'確實表明它是無限的。但是,一段時間後檢查'backgroundTimeRemaining'表明它仍然從180秒倒計時。 –
有趣。我想知道是否有區別,我有範圍打開?如果這樣做,也許你可以做15分鐘,15分鐘結束後停止。 – davidgyoung
不幸的是我無法複製你的結果。 (無論如何,我不認爲我會在15分鐘內離開範圍)Ranging給了無限的'backgroundTimeRemaining'大約5秒鐘,然後它又開始倒計時了。你是說只是啓用位置背景模式會給無限的背景時間?這似乎與許多關於背景模式的文獻相反。 –