Как открыть экран "Услуги определения местоположения" на экране настроек?

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

14 ответов

Решение

Шаг 1: Нажмите на название проекта >> цель >> информация >> Типы URL

Шаг 2:

-(IBAction)openSettingViewToEnableLocationService:(id)sender
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];
}

Я перепробовал все приведенные выше ответы, он не работает на iOS11.. он просто открывает страницу настроек, а не настройки приложения.. Наконец-то это работает..

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

См. https://developer.apple.com/documentation/uikit/uiapplicationopensettingsurlstring?language=swift

Сервисы определения местоположения App-Prefs:root=Privacy&path=LOCATION работал на меня. Когда я тестировал на устройстве, а не на симуляторе.

Я не буду перечислять то, что я пробовал, но это не помогло, это длинный список.

Пример использования, который предполагает, что либо службы определения местоположения отключены, либо разрешение отклонено или не определено:

if !CLLocationManager.locationServicesEnabled() {
    if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
        // If general location settings are disabled then open general location settings
        UIApplication.shared.openURL(url)
    }
} else {
    if let url = URL(string: UIApplicationOpenSettingsURLString) {
        // If general location settings are enabled then open location settings for the app
        UIApplication.shared.openURL(url)
    }
}

Свифт 3

Перейдите прямо к настройкам вашего приложения, как это. Не забудьте указать свой идентификатор пакета -

if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION/your.bundle.identifier") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

SWIFT 4 протестирован:

Единственный способ избежать отклонения и открытия настроек местоположения собственного приложения:

if let bundleId = Bundle.main.bundleIdentifier,
   let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)") {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Вы можете открыть его напрямую, используя приведенный ниже код,

Но первый сет URL Schemes в URL типа Info.plist

Затем напишите ниже строку на конкретное событие:

В объективе - C:

[[UIApplication sharedApplication] openURL:
 [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];

В Свифте:

UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=LOCATION_SERVICES")!)

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

Вы хотите быть в безопасности? использование UIApplicationOpenSettingsURLString, который откроет настройки приложения, без глубоких ссылок.

С помощью App-prefs Ваше приложение будет отклонено, как сказано во многих комментариях. https://github.com/mauron85/cordova-plugin-background-geolocation/issues/394

Swift 5+
Easy Way Direct Откроется указанная страница вашего приложения.

if let BUNDLE_IDENTIFIER = Bundle.main.bundleIdentifier,
    let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(BUNDLE_IDENTIFIER)") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Первый:

Добавить сайт

Зайдите в Настройки проекта -> Информация -> Типы URL -> Добавить новые схемы URL

Смотрите изображение ниже:

Во- вторых:

Используйте код ниже, чтобы открыть настройки местоположения:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];

по ссылке: /questions/46821175/otkryitie-prilozheniya-nastrojki-iz-drugogo-prilozheniya/46821332#46821332

Если вы установили locationManager.startUpdatingLocation() и отключили его на своем iphone, он автоматически покажет вам alertView с возможностью открыть и активировать местоположение.

Это решение работает для меня, но я не знал, что App Store отклонит мое приложение или нет.

      if let bundleId = Bundle.main.bundleIdentifier,
    let url = URL(string: "\(UIApplication.openSettingsURLString)&root=Privacy&path=LOCATION/\(bundleId)") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

На самом деле есть гораздо более простое решение для этого. Он покажет настройки вашего приложения с услугой слежения / доступом к камере и т.д.:

func showUserSettings() {
    guard let urlGeneral = URL(string: UIApplicationOpenSettingsURLString) else {
        return
    }
    UIApplication.shared.open(urlGeneral)
}

Эврика: Забудьте об URL. Используйте методrequestWhenInUseAuthorizationизCLLocationManagerкод, чтобы открыть собственное сообщение с подсказкой. Это то, что делают Tinder и другие приложения. Мне потребовалось время, чтобы понять это.

Это откроет подсказку, чтобы вывести вас ТОЧНО на экран «Службы определения местоположения»:

      let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()

После добавления префиксов в качестве типа URL, используйте следующий код, чтобы перейти непосредственно к настройкам расположения приложения.

if let url = URL(string: "App-prefs:root=LOCATION_SERVICES") {
     UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Другие вопросы по тегам