1

Как смоделировать местоположение для симулятора watchOS?Ошибка определения местоположения в симуляторе WatchOS

использования с запросом

- (void) requestLocation { 
    locationManager = [CLLocationManager new]; 

    locationManager.delegate = self; 

    [locationManager requestWhenInUseAuthorization]; 
    [locationManager requestLocation]; 
} 

Я всегда поймать ошибку:

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
     // Error here if no location can be found 
} 

Ошибкой является NSError * domain: @"kCLErrorDomain" - code: 0 0x7a867970

+0

http://stackoverflow.com/questions/1409141/location-manager-error-kclerrordomain-error-0 –

+0

Извините, но это не работает. Более того, нет информации о симуляторе watchOS. – Vyacheslav

ответ

1

Для того, чтобы сделать работу обнаружения местоположения в часовом тренажере, Вы должны для установки симулятора iPhone местоположения. Я предлагаю вам следовать шаги

  1. Установить место в iPhone симулятор, (Debug -> Location -> Пользовательские местоположение)
  2. Установить местоположение в часы simlautor (Debug -> Location -> Пользовательские место)
  3. Иногда при запуске приложения watchkit место в симуляторе iPhone сбрасывается на None. поэтому перед тем, как вы получите доступ к местоположению, установите точку останова в коде расширения. Проверить местоположение задано в обоих тренажерах.

Надеюсь, это поможет.

Пример кода в стрижа,

class LocationManager: NSObject, CLLocationManagerDelegate 
{ 
static let sharedInstance = VCLocationManager() 
private var locationManager : CLLocationManager? 

private override init() 
{ 

} 

func initLocationMonitoring() 
{ 
    //didChangeAuthorizationStatus is called as soon as CLLocationManager instance is created. 
    //Thus dont check authorization status here because it will be always handled. 

    if locationManager == nil 
    { 
     locationManager = CLLocationManager() 
     locationManager?.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager?.delegate = self 
    } 
    else 
    { 
     getCurrentLocation() 
    } 
} 

func getCurrentLocation() 
{ 
    let authorizationStatus = CLLocationManager.authorizationStatus() 
    handleLocationServicesAuthorizationStatus(authorizationStatus) 
} 

func handleLocationServicesAuthorizationStatus(status: CLAuthorizationStatus) 
{ 
    switch status 
    { 
    case .NotDetermined: 
     handleLocationServicesStateNotDetermined() 
    case .Restricted, .Denied: 
     handleLocationServicesStateUnavailable() 
    case .AuthorizedAlways, .AuthorizedWhenInUse: 
     handleLocationServicesStateAvailable() 
    } 
} 

func handleLocationServicesStateNotDetermined() 
{ 
    locationManager?.requestWhenInUseAuthorization() 
} 

func handleLocationServicesStateUnavailable() 
{ 
    //Ask user to change the settings through a pop up. 
} 

func handleLocationServicesStateAvailable() 
{ 
    locationManager?.requestLocation() 
} 

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) 
{ 
    handleLocationServicesAuthorizationStatus(status) 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    guard let mostRecentLocation = locations.last else { return } 
    print(mostRecentLocation) 
} 

func locationManager(manager: CLLocationManager, didFailWithError error: NSError) 
{ 
    print("CL failed: \(error)") 
} 
} 
+0

Nope. Я тестировал много раз. он не работает – Vyacheslav

+0

Работает симулятор iPhone/iPad. Но watchOS этого не делает. – Vyacheslav

+0

Я успешно смоделировал местоположение в приложении для наблюдения за часами, используя вышеупомянутые шаги. – vkhemnar