2014-03-02 40 views
1

我正在使用區域監視在用戶退出區域時運行某些代碼。當應用程序在前臺或後臺運行時,locationManger:didExitRegion:上的設備屏幕按預期方式調用。但是,當屏幕關閉時,我通常不會得到回調,直到我打開屏幕時,通過單擊電源按鈕,立即調用locationManger:didExitRegion:。所有的測試都是在iPhone 5s上完成的。locationManager:didExitRegion:屏幕關閉時未調用

下面是如何設置的區域:

self.monitoredRegion = [self setupGeoFenceWithCenter:self.currentLocation radius:200]; 
[self.locationManager startMonitoringForRegion:self.monitoredRegion]; 

-(CLRegion *)setupGeoFenceWithCenter:(CLLocation *)center radius:(CGFloat)radius 
{ 
    if (radius > self.locationManager.maximumRegionMonitoringDistance) 
    { 
     radius = self.locationManager.maximumRegionMonitoringDistance; 
    } 
    CLRegion * region = [[CLCircularRegion alloc] initWithCenter:center.coordinate 
                  radius:radius 
                 identifier:@"geofence"]; 
    return region; 
} 

這裏的委託回調:

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 
{ 
    NSLog(@"Exited Region"); 
} 

這裏的CLLocationManager初始化:

self.locationManager = [[CLLocationManager alloc] init]; 
self.locationManager.delegate = self; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 
self.locationManager.distanceFilter = kCLDistanceFilterNone; 

另外,最近我注意到, locationManager:monitoringDidFailForRegion:withError:方法越來越多地被調用荷蘭國際集團的錯誤描述:

錯誤域= kCLErrorDomain代碼= 5「的操作無法 完成。 (kCLErrorDomain錯誤5)」

但即使有這樣的錯誤,當應用程序在它按預期工作的前景。 這是對區域的監控預期的行爲?有沒有其他人遇到這個?難道這是我得到錯誤的結果

感謝

+0

我是testi使用iOS模擬器的Freeway驅動器模擬。我的代表從未被稱爲..任何想法?我已經設置了委託,並且CLLocationManager對象也保留了下來...... – Nil

回答

-1

你嘗試等待數分鐘(4〜15)PS:?!?。您的應用程序應該在前臺之前切換您的iDevice斷這是基於iBeacon測試...它可以幫助你的情況。

+1

4-15分鐘似乎過多。它是否寫在文檔中?另外,你爲什麼說應用程序必須在前臺?據蘋果公司稱,即使該應用程序被終止,一旦區域邊界超出,應用程序啓動並獲得通知。 – Gad