2016-09-30 10 views
15

Używałem prefs: root = W URL-u schemat URL w mojej aplikacji z prefsami wprowadzonymi w info.plist, aby otworzyć bezpośrednio aplikację ustawień iOS w ustawieniach Wi-Fi i działało świetnie na iOS 9, ale nie działa już na iOS 10.Otwarte ustawienia Wifi przez "prefs: root = WIFI" nie powiodło się w iOS 10

Czy ktoś wie, czy to tylko regresja w pierwszym podglądzie programisty, czy sposób otwierania ustawień Wi-Fi zmienił się w iOS 10 lub nie jest już dozwolone?

+4

katalogu 'preferencje:' schemat URL nigdy nie było oficjalnie wspierane. – rmaddy

+0

Ale nasza aplikacja musi otworzyć ustawienia Wi-Fi. Czy znasz jakieś inne API działa. – tbago

+0

App-Prefs: root = WIFI działa dla mnie – everettjf

Odpowiedz

5

Moja aplikacja również korzysta z tego api. Niestety Apple wyłącza to na iOS 10. Oto moje rozwiązanie: poniżej iOS 10, nadal można otworzyć Ustawienia aplikacji. w systemie iOS 10 przejdzie do podstrony (dostęp do danych komórkowych) aplikacji ustawień, możesz wrócić do strony ustawień jednym kliknięciem. Decyduję się go zatrzymać. ponieważ nadal jest wygodnie niż użytkownik ręcznie otworzyć Ustawienia aplikacji.

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"]; 
if ([[UIApplication sharedApplication] canOpenURL:url]) { 
    [[UIApplication sharedApplication] openURL:url]; 
} else { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; 
} 
13

SWIFT 3.0: - pracę w iOS 10 i nowszych wersjach także iOS 7,8,9

@IBAction func openWifiSetting(_ sender: AnyObject) { 
    let url = URL(string: "App-Prefs:root=WIFI") //for WIFI setting app 
    UIApplication.shared.openURL(url!) 
} 
+2

Whoa! Porzuciłem nadzieję, że jest to możliwe po iOS 10.x. Czy znalazłeś jakiś powód, by sądzić, że zrobienie tego spowoduje odrzucenie aplikacji przez App Store? –

+0

iOS11 też jest OK –

6

spróbować to dla Objective C w iOS 10

NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"]; 
if ([[UIApplication sharedApplication] canOpenURL:url]) { 
    [[UIApplication sharedApplication] openURL:url]; 
} else { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=WIFI"]]; 
} 
15

Właśnie dlatego explicite: Apple nie pozwala na to. Możliwe, że mimo to Twoja aplikacja to zrobi, ale to jest to samo, co używanie innego nieudokumentowanego API.

Here is the full list z obsługiwanych schematów URL Apple.

Here's a thread gdzie Apple potwierdza, że ​​"wszelkie schematy URL Apple, które nie są oficjalnie udokumentowane, powinny być uważane za prywatne API."

+0

Wspaniale przegłosowane. Dobra robota –

1

To działa prawidłowo na iOS 10,

Idź do Targets -> (Aplikacja) -> Informacje -> Rodzaje URL -> +

W URL Schemes zapisu

prefs

następnie zadzwonić,

- (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"]]; 
    } 
} 
1

iOS 10, aby otworzyć ustawienia aplikacji:

if let settingsURL = URL(string: UIApplicationOpenSettingsURLString) { 
       UIApplication.shared.openURL(settingsURL) 
      } 
Powiązane problemy