首先使用requestAlwaysAuthorization
而不是requestWhenInUseAuthorization
爲CLAuthorizationStatus
訪問位置,當應用程序是相當。
現在使用
UIApplication* application = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier background_task;
background_task = [application beginBackgroundTaskWithExpirationHandler:^ {
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[self locationManager] startUpdatingLocation];//call you web-api here to update location on server.
[application endBackgroundTask: background_task];
background_task = UIBackgroundTaskInvalid;
});
這將幫助。
'即使應用程序未運行' - 是不可能的,因爲它沒有運行。你唯一的選擇是保持應用程序在後臺運行,並希望沒有人會殺死它 – Wain
嗨Wain - Wasseem我敢肯定,當「在後臺運行」。 Waseem - **編輯你的標題和帖子**所以它說!你會得到更多的答案 – Fattie
NO。我的意思是應用程序沒有運行。我看過應用Life360(https://www.life360.com/),它正在做同樣的事情。我不知道他們如何實現這個 –