iOS 14: Разрешить доступ к местоположению | Всегда меню не найдено - PullRequest
3 голосов
/ 10 июля 2020

Я попытался запустить свой проект в Xcode 12 beta 2 с симулятором iOS 14. Я заметил, что меню «Всегда» не отображается на экране «Разрешить доступ к местоположению».

введите описание изображения здесь

Я дал следующие info.plist

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>TEST APP</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>TEST APP</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>TEST APP</string>

Ответы [ 5 ]

2 голосов
/ 06 августа 2020

Я также наблюдал эту проблему и оставил отзыв о ней - пока ответа нет, за исключением «менее 10» других сообщений об этом.

Кажется, есть обходной путь с использованием simctl инструмент командной строки:

xcrun simctl privacy booted grant location-always <bundle identifier>

Это включает параметр «Всегда» в настройках.

1 голос
/ 19 июля 2020

Параметр «Всегда разрешать» был удален из начального запроса разрешений на местоположение . Вы можете получить эту опцию позже в виде нового приглашения. Тогда возникает вопрос, как мы будем поддерживать функцию определения местоположения, если она нам понадобится в фоновом режиме?

enter image description here

Way to achieve this -

  1. Call the method "locationManager.requestAlwaysAuthorization()" before your app can receive location information. If your app needs always permission and you want to receive the prompt for always permission later.

  2. Initially, users can select "While Using the app" or select a new option, "Allow Once"(introduced in iOS 13 itself).

  3. If the user continues to use the app, iOS 13 will now automatically prompt to upgrade location permissions from "While Using the app" to "Always Allow".

    enter image description here

  4. You will receive #2 prompt next time after unlocking the device and launching the app with already grated "While Using the app" permission.

Source

This WWDC 2019 video also suggests that this is still possible: https://developer.apple.com/videos/play/wwdc2019/705/

В 6: 57 «... вы можете сначала запросить авторизацию при использовании, а затем, позже, когда пользователь взаимодействует с функцией приложения, которая это гарантирует, всегда запрашивать авторизацию позже ...»

0 голосов
/ 26 августа 2020

Я столкнулся с той же проблемой. Насколько я могу судить, это / была ошибка в нескольких первых бета-версиях Xcode 12. Я обновился до Beta # 6, когда она вышла сегодня утром, и теперь проблема исчезла. Посмотрим, исправит ли это это и вас.

0 голосов
/ 20 июля 2020

Похоже, что есть несколько обновлений в управлении местоположением для iOS 14.

Одно из них заключается в том, что locationManager(_:didChangeAuthorization:) теперь устарело, поэтому вам нужно вместо этого реализовать locationManagerDidChangeAuthorization(_:) в вашем CLLocationManager .

Вам также необходимо убедиться, что вы вызываете функцию requestAlwaysAuthorization() в вашем Location Manager. Из Apple docs об этой функции:

Вы должны вызвать этот метод или метод requestWhenInUseAuthorization (), прежде чем ваше приложение сможет получать информацию о местоположении.

0 голосов
/ 13 июля 2020

Независимо от того, что вы запрашиваете в своем приложении, те же параметры отображаются в настройках вашего приложения.

Если вы запросили авторизацию при использовании, только с использованием requestWhenInUseAuthorization() метода CLLocationManager, только While Using the App появится в настройки вашего приложения.

Если вы запрашиваете всегда использовать requestAlwaysAuthorization(), опция Always появится в настройках вашего приложения.

Вы можете запросить как requestAlwaysAuthorization(), так и requestWhenInUseAuthorization() в некоторых укажите в приложении в зависимости от вашего варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...