2012-05-01 80 views
3

我正嘗試在iPhone 4中使用startMonitoringForRegion在iOS中編寫應用程序,每當位置代理收到位置更新時都會觸發本地通知。如果手機處於清醒狀態(屏幕點亮),應用程序運行良好,發出通知,但是當我讓手機進入睡眠狀態(屏幕爲黑色)時,我不會再收到通知,直到我喚醒手機按home鍵iOS startMonitoringForRegion在睡眠模式下不工作(黑色屏幕)

我嘗試添加「所需的背景模式」 - 「應用程序註冊了位置更新」鍵info.plist中,但它並沒有什麼意義......

CLLocationManager委託被設置爲AppDelegate。

即使設備處於睡眠狀態,爲了使位置更新能夠註冊,我還需要做些什麼?提前致謝。

回答

0

可能是因爲CLLocationManager實例在應用程序關閉後已被釋放。

對我來說,我會用CLLocationManager屬性和委託設置爲單例創建一個位置管理器的單例。之後,我會調用方法startMonitoringSignificantLocationChanges以確保應用程序接收位置更新。即使應用程序被殺,它也可以工作。

對於情況下,如果應用程序被殺死了,我將需要實例位置經理單在應用程序委託didFinishLaunchingWithOptions方法:

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]) { 
    //instantiate the singleton here 
    NSArray *regions = [[[[LocationManager sharedManager] locationManager] monitoredRegions] allObjects]; 
} 

我更多的在這裏解釋一下使用顯著位置變化之間的差異標準位置服務:location based push notification when app is not running?