簡體   English   中英

3分鍾后iOS 9位置更新后台任務

[英]iOS 9 Location Update Background task after 3 minutes

我一直在深入研究這個使用基本計時器檢查位置更新的代碼。 然后我將它發送到服務器的lat / lng。

http://mobileoop.com/background-location-update-programming-for-ios-7 https://github.com/voyage11/Location

當插入並通過XCode連接時,它運行良好,但是當我拔下並移動設備時,操作系統似乎總是在3分鍾后完全殺死后台線程。 因此,如果我將計時器設置為每30秒運行一次,我將獲得~6次更新,直到我將應用程序帶到前台。

我已經讀過最大后台執行時間是3分鍾,但是我看到這個代碼在1分鍾后重置了后台任務,所以我不知道為什么我會看到這個。

必須有一些解決方法。 我能在這做什么嗎?

編輯:這幫助我: 在iOS9中的CLLocationManager中的allowsBackgroundLocationUpdates

SE:

if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
    [self.locationManager setAllowsBackgroundLocationUpdates:YES];
}

這是后台位置跟蹤所必需的。

如果其他人遇到這個問題,上面列出的github倉庫中的代碼 - https://github.com/voyage11/Location-最近已經更新了iOS 9的修復程序,這將允許GPS連續輪詢沒有線程的背景在3分鍾后終止。

如果任何人在運行這個非常優秀的庫時遇到不可靠的問題,在更復雜的應用程序中集成到其他xcode模塊中,他們可能會查看后台任務列表Id數組的初始化語句,並考慮更改_bgTaskIdList = [NSMutableArray array]; to _bgTaskIdList = [[NSMutableArray alloc]init]; in BackgroundTaskManager.m _bgTaskIdList = [NSMutableArray array]; to _bgTaskIdList = [[NSMutableArray alloc]init]; in BackgroundTaskManager.m _bgTaskIdList = [NSMutableArray array]; to _bgTaskIdList = [[NSMutableArray alloc]init]; in BackgroundTaskManager.m直到我這樣做,我的行為不可靠。 有時它工作,有時我得到一個堆棧轉儲。 我發現這是因為bgTaskList已被其他數據覆蓋,導致錯誤的訪問錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM