Запрос местоположения только на Apple Watch, без кода на сопряженном телефоне

Я искал везде, включая пример приложения Apple. Но я не могу найти нигде, когда я могу запросить местоположение без необходимости какого-либо кода, запущенного на телефоне, приведенный ниже код при использовании в "интерфейсном контроллере" возвращает статус "не определен". Я проверил свою информацию.plist имеет значения ключа конфиденциальности.

import Foundation
import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {

    /// Location manager to request authorization and location updates.
    let manager = CLLocationManager()

    /// Flag indicating whether the manager is requesting the user's location.
    var isRequestingLocation = false

      var workoutLocation: CLLocation?

    func requestLocation() {

        guard !isRequestingLocation else {
            manager.stopUpdatingLocation()
            isRequestingLocation = false
            return
        }

        let authorizationStatus = CLLocationManager.authorizationStatus()

        switch authorizationStatus {
        case .notDetermined:
            isRequestingLocation = true
            manager.requestWhenInUseAuthorization()

        case .authorizedWhenInUse:
            isRequestingLocation = true
            manager.requestLocation()

        case .denied:
            print("Location Authorization Denied")
        default:
            print("Location AUthorization Status Unknown")
        }
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard !locations.isEmpty else { return }

        DispatchQueue.main.async {
            let lastLocationCoordinate = locations.last!.coordinate

            print("Lat =  \(lastLocationCoordinate.latitude)")

            print("Long = \(lastLocationCoordinate.longitude)")

            self.isRequestingLocation = false

        }
    }
}

основная информация о приложении.файл plist

<key>NSLocationAlwaysUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>
    <key>NSLocationUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>

смотреть информацию о расширении.файл plist

<key>NSLocationAlwaysUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>
    <key>NSLocationUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>We will read your location while performing a workout to create a workout route</string>

1 ответов


пользователь может предоставить доступ только к своему местоположению на своем iPhone. Это невозможно сделать на Apple Watch. Если iPhone, к которому подключены часы, разблокирован, на телефоне отобразится запрос на авторизацию использования местоположения; вам не нужно запускать код для этого на iOS.

с руководство по программированию приложений для watchOS: использование технологий iOS

имейте в виду, что разрешение для некоторых технологий должно быть принято на пользователей iPhone. Пользователь должен предоставить разрешение на использование определенной системы технологии, такие как Core Location. Использование одной из этих технологий в вашем расширении WatchKit запускается соответствующее приглашение на пользователей iPhone. Apple Watch также отображает собственное приглашение, спрашивая пользователь для просмотра запроса разрешения на iPhone. Для информации о технологиях, требующих разрешения пользователя, см. В разделе " Поддержка Конфиденциальность пользователей " в руководстве по программированию приложений для усвн.