我想在後臺基於計時器實現位置更新。我知道所有關於iOS中不同的位置更新方法,並嘗試過它們,但它們不符合需要。我需要每隔一段時間檢查一次地點,即使沒有激活。我試過使用計時器,但他們不會在後臺執行。這使我找到這個問題How do I get a background location update every n minutes in my iOS application?並提及使用後臺任務iPhone
UIApplication:beginBackgroundTaskWithExpirationHandler:
我的問題是你如何使用這種方法嗎?我已經搜索了蘋果文檔,但是它們在處理後臺執行和位置更新時沒有任何示例時遞歸地指向對方。
我有這樣的代碼,現在基於一些例子,我發現:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
locationUpdater=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:locationUpdater];
locationUpdater=UIBackgroundTaskInvalid;
} ];
}
而且我已經添加在的.plist關鍵「位置」支持的背景模式
是否剛剛添加該保證我的應用程序不會在一段時間內死亡,這樣我就可以保持定時器運行?或者我在哪裏添加在後臺模式下執行的方法。
時間間隔和更多的更新之間的距離不夠準確,我的需要。如果我不需要位置,顯然我只是重新啓動計時器。後臺任務就像正常執行一樣嗎?你把這段代碼放在didEnterBackground中嗎? – utahwithak
有一個位置管理器「導航」模式,即使在汽車中駕駛時顯示實時位置,該模式也是相當準確的 - 您是否在使用該模式?或者你需要它的飛機速度?後臺任務就像是正常執行,是的,但如果你濫用它,應用程序將被操作系統殺死,甚至被審查小組拒絕。 – SVD
那麼,如果我在後臺任務中創建一個定時器,每分鐘發送一次請求會怎麼樣?十分鐘後我的應用程序將被終止?如果是這樣,每當我的計時器失效時,我都可以銷燬並重新創建後臺任務。我錯了嗎? – Slavcho