iOS Swift4 не запрашивал разрешение на приложение - PullRequest
1 голос
/ 08 марта 2019

Мне нужен доступ к CMAltimeter в моем приложении.Поэтому, конечно, мне нужно попросить разрешения.И я добавляю Privacy - Location When In Use Usage Description и, конечно, Privacy - Motion Usage Description со значением в info.plist, но приложение никогда не запрашивает разрешение, а статус авторизации всегда не определяется

(Устройство -> iPhone XR iOS12) иновейший Xcode.Мой вход в Xcode - это только личная команда с моим Apple ID, потому что это нужно только для университета.(И до сегодняшнего дня я не покупал лицензию разработчика) Приложение и CoreMotion работают.(CMDeviceMotion не нуждается в разрешениях)

func myDeviceMotionQFE(){
    if CMAltimeter.isRelativeAltitudeAvailable() {
        switch CMAltimeter.authorizationStatus() {
        case .notDetermined:
            print("Altimeter -> NotDetermined")
            break
        case .denied:
            print("Altimeter -> Denied")
            break
        case .restricted:
            print("Altimeter -> Restricted")
            break
        case .authorized:
            print("Altimeter -> Authorized")
}

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Моя первоначальная проблема заключалась в том, что startRelativeAltitudeUpdates(to:withHandler) не работал и был отвлечен точно такой же проблемой: CMAltimeter.authorizationStatus() всегда был .notDetermined.

Однако оказалось, что этот экземпляр CMAltimeter вышел из области видимости и автоматически получил ARC, а обработчик больше не вызывался.

Краткое описание: * * * * * * * * * * * * * * * * * * * * * * * * IOS12 *.

0 голосов
/ 09 марта 2019

Добро пожаловать!Вам нужно сделать две вещи, чтобы получить разрешение на данные альтиметрии.Во-первых, описание plist, которое у вас уже есть.Вторым является вызов CMAltimeter.authorizationStatus ().Это запросит у пользователя разрешение на использование строки, содержащейся в списке.

Вы можете получить один из четырех результатов, как в CMAltimeter CMAuthorizationStatus: notDetermined, ограничено, запрещено или авторизовано.Если вы получите разрешение, вы можете идти.Если вам отказывают, пользователь не дал свое разрешение.Ограничено то, что существуют некоторые общесистемные ограничения на эти данные местоположения (возможно, из MDM).

Поиск в документации Xcode для CMAltimeter, authorizationStatus и CMAuthorizationStatus.

Когда вы получите "авторизованный ответ, вы можете вызвать startRelativeAltitudeUdpates с помощью обработчика, и ваше приложение будет получать обновления, когда будут доступны данные.

...