Как открыть экран "Услуги определения местоположения" на экране настроек?
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)
}