J'essaie d'accéder aux paramètres WIFI via mon application à l'aide d'Objective-C. Mais ne peut trouver aucun moyen. Quelqu'un pourrait-il m'aider?
Déjà testé avec:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
Ne fonctionne pas sur iOS 9.
C'est mon code
if (&UIApplicationOpenSettingsURLString != NULL) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
}
Essayez d’ajouter des préférences aux modèles d’URL tels que https://stackoverflow.com/a/31253743/3668465 did
Cela fonctionne très bien sur iOS 10,
Allez à Cibles -> (Application) -> Info -> Types d'URL -> +
Dans le URL Schemes
écrire
prefs
Alors appelez,
- (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"]];
}
}
Conformément aux normes New Review d'Apple, nous ne sommes pas censés utiliser cette méthode pour ouvrir les paramètres Wi-Fi. Je l'utilise depuis longtemps dans mon application et Apple a récemment rejeté le commentaire ci-dessous.
Votre application utilise le schéma d'URL non public "prefs: root =", qui est un entité privée. L'utilisation d'API non publiques n'est pas autorisée sur l'application Stockez car cela peut entraîner une mauvaise expérience utilisateur si ces APIs changement.
Vous pouvez donc simplement accéder aux paramètres de l'application à l'aide de UIApplicationOpenSettingsURLString.
Code rapide:
if let settingsUrl = URL.init(string: UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.openURL(settingsUrl)
}
Toutes les conditions:
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.
}
//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];
Swift 4.2, iOS 12
C'est la fonction que j'utilise actuellement dans mon application pour cela:
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
}
}
Usage: UIApplication.openAppSetting()
J'ai également utilisé un schéma d'URL non public, tel que: prefs:root=
, mais mon application a été rejetée. Donc, si vous essayez de faire des choses plus spécifiques avec la profondeur de la fibre, ne perdez pas votre temps, car pour le moment, vous ne pouvez pas!
Vous ne pouvez pas accéder directement au réglage wifi avec openURL. Tout ce que vous pouvez faire est d'ouvrir les paramètres de votre propre application.
if (&UIApplicationOpenSettingsURLString != nil) {
NSURL *URL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:URL];
} else {
...
}