2012-09-05 28 views
2

我搜索了多天的解決方案,但沒有發現任何令我滿意的解決方案。在iOS中暫停啓動locationManager

我已經啓動了LocationManager,這是正常工作。現在,我想按計劃連接LocationManager。例如,上午9點到下午1點之間,地點經理應該工作,下午1點到下午3點關閉,然後直到午夜地點經理必須開啓。

當應用程序暫停並且LocationManager關閉時,如何觸發某個操作?

我寫了這樣的事情:

[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(doInBackground:) userInfo:nil repeats:YES]; 

- (void) doInBackground:(NSTimer*)time { 
    ScheduleModel *schMod = [[ScheduleModel alloc]init]; 
    if(![schMod isScheduleActiveNow]){ 
     [locationManager stopUpdatingLocation]; 
     NSLog(@"LocationManager OFF"); 
    } else if(!locationManager){ 
     [locationManager startUpdatingLocation]; 
     NSLog(@"LocationManager ON"); 
    } 
    [schMod release]; 
} 

但當LocationManager工作它纔會起作用。當我關閉LocationManager時,看起來沒有任何東西可以觸發動作doInBackground

有沒有解決這個問題的方法?

+0

不幸的是,我意識到這個解決方案只適用於模擬器,當我在設備上安裝應用程序時,它根本不工作。我會嘗試做類似線程的事情。每一個幫助將不勝感激。 – jkaluzka

回答

0

當應用程序暫停時,如果您尚未註冊後臺位置服務並啓動位置管理器實例更新,則無法讓應用程序再次開始由定時器進行更新。 的選項有:

  1. 離開外景經理更新,而只是在時間,你打算要積極響應事件。
  2. 僅當進入後臺狀態時,纔會更改重要位置更改更新。該應用程序將在明顯的位置更改中喚醒,然後您可以檢查時間並根據需要啓動連續更新進行響應。
  3. 設置監控區域,喚醒該區域並作出相應響應。

在後臺持續更新(如果不是必需的話)不是用戶電池的負責處置。如果你更多地解釋你正在努力完成的任務,我可能會有更好的建議。

你可以看到一些我所做的背景狀態在這裏工作,我的處理程序在GitHub上:

TTLocationHandler

0

爲了實現一個功能,這樣你必須採取有關的一些點的護理一個ios應用程序的狀態和多任務處理能力。 首先,您需要註冊應用才能獲取位置更新,即使應用沒有運行。通過顯着的位置更改屬性,您可以跟蹤應用狀態的位置無關。 另一件事是,你需要在特定的時間間隔的位置更新。我認爲這可能是通過發射本地通知服務。