2014-11-06 59 views
1

我試圖利用iOS模擬器中的選項:debug-> freeway drive/city run以模擬位置更新。在後臺模式下使用高速公路/ iOS模擬器運行

在我的代碼我使用CLLocationManager爲獲得與下面的代碼位置更新:

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters]; 
[locationManager setDistanceFilter:20]; 
} 

-(void)viewWillAppear:(BOOL)animated { 
[locationManager startUpdatingLocation]; 
} 

-(void)locationManager:(CLLocationManager *)lm didUpdateLocations:(NSArray *)locations{ 
CLLocation *location = [locations lastObject]; 
NSLog(@"Location returned: %f, %f Accuracy: %f", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy); 
} 

我從來沒有得到關於委託位置更新的回調,而我的應用程序在後臺,我選擇在模擬器中的選項。

我提供了我的應用程序位置更新的背景模式。請讓我知道如何使用這些功能,或者如果我在這裏丟失任何東西。

回答

1

我終於整理出了問題。模擬器的選項工作得很好,但它是CLLocation的執行問題。

  1. 您添加NSLocationWhenInUseUsageDescription & NSLocationAlwaysUsageDescription的plist出現,將提示用戶一些字符串值:

    在iOS 8除非該位置更新的代碼將無法正常工作。

  2. 您需要添加詢問用戶的權限獲得位置代碼的工作:

    [self.locationManager requestWhenInUseAuthorization] 
    [self.locationManager requestAlwaysAuthorization] 
    

this post服用。

+0

謝謝!我知道我需要的是類似的東西,所以在將這些條目添加到plist並在開始更新位置之前詢問用戶之後,我的問題就解決了。 :) – 2014-11-12 18:06:07