как программно открыть настройки WIFI в target c в iOS9

Я пытаюсь получить доступ к настройкам WIFI через приложение из Objective-C. Но никак не могу найти способ. Может ли кто-нибудь мне помочь?

Уже протестировано с:

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

Не работает на iOS 9.

12 голосов | спросил Helton Fernandes Sampaio 30 +03002015-10-30T17:00:54+03:00312015bEurope/MoscowFri, 30 Oct 2015 17:00:54 +0300 2015, 17:00:54

8 ответов


0

Это мой код

if (&UIApplicationOpenSettingsURLString != NULL) { 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]]; 
} 

Попробуйте добавить префы в схемы URL, например https://stackoverflow.com/a/31253743/3668465 did

ответил Fernando García Corrochano 12 42015vEurope/Moscow11bEurope/MoscowThu, 12 Nov 2015 19:47:50 +0300 2015, 19:47:50
0

Это отлично работает на iOS 10,

  

Перейти к целям -> (Приложение) -> Информация -> Типы URL -> +

В URL Schemes запись

  

префы

Тогда звони,

- (void)openWifiSettings
{
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"prefs:root=WIFI"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]];
    }
}
ответил Shuvo Joseph 7 J0000006Europe/Moscow 2016, 08:38:02
0

В соответствии со стандартами Apple New Review мы не должны использовать этот способ для открытия настроек Wi-Fi. Я долгое время использовал это в своем приложении, и недавно Apple отклонила следующий комментарий.

  

Ваше приложение использует непубличную схему URL "prefs: root =", которая является   частное лицо. Использование закрытых API-интерфейсов в приложении запрещено.   Хранить, потому что это может привести к плохому пользовательскому опыту, если эти API   изменение.

Таким образом, вы можете просто перейти к настройкам приложения, используя UIApplicationOpenSettingsURLString.

Swift Code:

if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
                    UIApplication.shared.openURL(settingsUrl)
                }
ответил Karthick Ramesh 27 J000000Friday18 2018, 00:58:52
0

Все условия:

    NSURL * urlCheck1 = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
    NSURL * urlCheck2 = [NSURL URLWithString:@"prefs:root=WIFI"];
    NSURL * urlCheck3 = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

    if ([[UIApplication sharedApplication] canOpenURL:urlCheck1])
    {
        [[UIApplication sharedApplication] openURL:urlCheck1];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck2])
    {
        [[UIApplication sharedApplication] openURL:urlCheck2];
    }
    else if ([[UIApplication sharedApplication] canOpenURL:urlCheck3])
    {
        [[UIApplication sharedApplication] openURL:urlCheck3];
    }
    else
    {
        //Unable to open settings app.
    }
ответил Vinod Sutar 27 FebruaryEurope/MoscowbMon, 27 Feb 2017 15:52:18 +0300000000pmMon, 27 Feb 2017 15:52:18 +030017 2017, 15:52:18
0
//Pre iOS 10
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
if (![[UIApplication sharedApplication] canOpenURL:url])
{   //iOS 10+
    url = [NSURL URLWithString:@"App-Prefs:root=WIFI"];
}
[[UIApplication sharedApplication] openURL:url];
ответил Pierre 20 FebruaryEurope/MoscowbMon, 20 Feb 2017 17:11:12 +0300000000pmMon, 20 Feb 2017 17:11:12 +030017 2017, 17:11:12
0

Вы не можете сразу перейти к настройке Wi-Fi с помощью openURL. Все, что вы можете сделать, это открыть настройки для вашего собственного приложения.

if (&UIApplicationOpenSettingsURLString != nil) {
   NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
   [[UIApplication sharedApplication] openURL:URL];
} else {
  ...
}
ответил Bart 30 +03002015-10-30T17:10:02+03:00312015bEurope/MoscowFri, 30 Oct 2015 17:10:02 +0300 2015, 17:10:02
0

Swift 4.2, iOS 12

Это функция, которую я сейчас использую в своем приложении:

extension UIApplication {

    ...

    @discardableResult
    static func openAppSetting() -> Bool {
        guard
            let settingsURL = URL(string: UIApplicationOpenSettingsURLString),
            UIApplication.shared.canOpenURL(settingsURL)
            else {
                return false
        }

        UIApplication.shared.open(settingsURL)
        return true
    }
}

Использование: UIApplication.openAppSetting()

Я также использовал непубличную схему URL , например: prefs:root=, но мое приложение было отклонено , Так что, если вы пытаетесь делать более конкретные вещи с глубокими ссылками, не тратьте свое время, потому что в данный момент вы не можете!

ответил Alessandro Francucci 22 +03002018-10-22T13:32:12+03:00312018bEurope/MoscowMon, 22 Oct 2018 13:32:12 +0300 2018, 13:32:12
0

Вы можете использовать эту опцию:

iOS> = 4.1 можно получить SSID беспроводной сети, к которой устройство постоянно подключено.

Для этого вы должны использовать функцию CNCopyCurrentNetworkInfo

Подробная информация о реализации: iPhone получает SSID без частной библиотеки

ответил pedro.olimpio 30 +03002015-10-30T18:19:15+03:00312015bEurope/MoscowFri, 30 Oct 2015 18:19:15 +0300 2015, 18:19:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132