2014-09-04 132 views
0

我的應用需要位置數據才能運行。我確保用戶在登錄前必須接受我的應用的位置服務。如果用戶拒絕,它將阻止用戶登錄,直到用戶授予應用使用位置服務的權限。CLLocationManager委託方法didUpdateToLocation在用戶的設備上未調用

除1個測試用戶的設備外,一切正常。即使用戶授予了應用程序位置服務權限,設備也不會獲取位置數據。沒有GPS圖標出現。谷歌地圖對用戶的設備工作正常。我真的不確定這裏發生了什麼。看起來好像didUpdateToLocation根本不在該用戶的設備上調用。什麼可能導致這個問題?

代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    [self getCurrentLocation]; 
    ... 
} 

- (void)getCurrentLocation { 
    if (nil == locationManager) 
     locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 
    locationManager.distanceFilter = 100; // meters 
    [locationManager startMonitoringSignificantLocationChanges]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    CLLocation *currentLocation = newLocation; 
    if (currentLocation != nil) { 
     [self setLatitude:[NSNumber numberWithFloat:currentLocation.coordinate.latitude]]; 
     [self setLongitude:[NSNumber numberWithFloat:currentLocation.coordinate.longitude]]; 
     if (loginController) { 
      [loginController validateSession]; 
      loginController = nil; 
     } 

    } 
} 
+0

如果您嘗試在設備上,請刪除locationManager.distanceFilter = 100;因爲更新定位方法每100米後調用你的手機走測試你可以刪除它 – 2014-09-05 09:52:46

回答

0

您沒有使用

- (void)startUpdatingLocation; 

但你使用

- (void)startMonitoringSignificantLocationChanges; 

既然你設置了所有的過濾器,你可能要使用的第一(startUpdatingLocation )。

至於爲什麼這不起作用一個單一的用戶的設備:startMonitoringSignificantLocationChanges不使用GPS三角測量用戶的位置,因此與谷歌地圖比較它不會幫助你。

有關這兩種方法的詳細信息,蘋果公司的文檔中進一步研究: Apple Doku

+0

這是不正確的。它適用於其他用戶。除了這一個用戶以外,其他所有設備上都會出現GPS圖標。 startMonitoringSignificantLocationChanges只是更新頻率較低,位置事件的傳遞速度比startUpdatingLocation – imObjCSwifting 2014-09-04 19:17:10

+0

這些行速度慢:locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; locationManager.distanceFilter = 100; //如果使用startMonitoringSignificantLocationChanges,則米將被完全忽略。那就是我想指出的。實際上,YES,startMonitoringForSig ..不需要GPS,但它會使用一些時間。但其他方式需要wifi或celluar! – 2014-09-05 09:25:42

1

請檢查下面的讚揚。有時候這個問題也發生在我身上。

  1. 完全卸載並重新安裝並再次檢查應用程序。

  2. 重置iPhone設置中的網絡設置。

  3. 刪除先前安裝的應用程序並重新安裝。

相關問題