Запрос разрешений на обновление местоположения iOS

В настоящее время мое приложение настроено так, чтобы всегда запрашивать службы определения местоположения, используя [locationManager requestAlwaysAuthorization]; и NSLocationAlwaysUsageDescription.

Это работает нормально, однако я хотел бы дать возможность использовать службы определения местоположения только при использовании приложения, как показано на снимке экрана ниже.

Я пытался добавить NSLocationWhenInUseUsageDescription, однако это отменяет его всегда запрашивать и выдает предупреждение только во время использования, есть идеи о том, кому дать оба варианта в настройках?


person Sami    schedule 11.09.2015    source источник


Ответы (2)


Сначала спросите пользователя, используя свой собственный диалог с двумя вариантами - всегда / при использовании приложения. Затем вызовите соответствующий запрос разрешения в соответствии с выбором пользователя.

Либо:

[locationManager requestAlwaysAuthorization];

or:

[locationManager requestWhenInUseAuthorization];

наличие обоих в plist допустимо, так что это не проблема. Зависит от того, когда вы на самом деле запрашиваете это в коде.

Однако его будет немного сложно поддерживать, поэтому очень важна хорошая структура кода.

person Michal    schedule 11.09.2015
comment
У меня он работает «всегда», но я хочу, чтобы пользователь мог зайти в настройки служб определения местоположения и изменить их на «во время использования». показывается только один раз. - person Sami; 11.09.2015
comment
Кроме того, если бы у меня были оба ключа для info.plist, вызывалось бы только все используемое уведомление, а не всегда то, которое я хочу вызвать. - person Sami; 11.09.2015
comment
Ну, если вы хотите изменить то, что вы уже просили, это может быть проблемой. Предлагаемое мной решение предназначено только для новых пользователей. Там, где вы уже показали диалог, вы ничего не можете сделать... кроме как идти своим путем - собственный диалог, объясняющий, что пользователю нужно сделать. - person Michal; 11.09.2015

Встроенное оповещение iOS допускает только один уровень разрешений и запрашивает пользователя только один раз. Предполагается, что большинству приложений понадобится только одно или другое. В любом случае, если вы хотите, чтобы обе опции отображались в настройках, вы должны запросить разрешение Always.

Что еще более важно: параметр Always на самом деле используется только приложениями, которым требуются фоновые обновления местоположения. Поэтому, если ваше приложение не требует этого, вы не должны просить об этом. Кроме того, использование фонового режима определения местоположения приведет к тому, что ваше приложение будет подвергаться более тщательной проверке в процессе проверки приложения.

person rmp    schedule 11.09.2015