web-dev-qa-db-fra.com

iOS 10 Paramètres ouverts Crash

Nous créons donc une application iOS qui, en appuyant sur un bouton, ouvre l'application de configuration de l'appareil. J'ai vu que la méthode avait légèrement changé avec iOS 10 et Swift 3, j'utilise donc une condition pour vérifier quelle version d'iOS l'utilisateur est sur avant d'exécuter le code.

if let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) {

    if #available(iOS 10.0, *) {

        // iOS 10.0.

        UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)

    } else {

        // Fallback on earlier versions.

        UIApplication.shared.openURL(settingsUrl)
    }
}

Cela fonctionne parfaitement sur un appareil iOS 9, mais pas sur un iOS 10. Le problème est que, même si l'application envoie l'utilisateur à l'application des paramètres dans iOS 10, elle se bloque immédiatement sans journaux de plantage. Si j'utilise cette même méthode pour ouvrir un site Web tel que Google, il fonctionne parfaitement sur iOS 9 et 10. J'ai effectué beaucoup de recherches et il semble que certaines modifications ont été apportées aux schémas d'URL, mais je n'en trouve pas. corrections/solutions de contournement.

10
BenSDConway

Le schéma d'URL personnalisé n'est pas officiellement documenté par Apple. Cela ne fonctionnera plus sous iOS 10. L'application est autorisée à amener les utilisateurs vers Votre application Paramètres personnels page uniquement. Votre application va se bloquer si elle n’a pas de page de paramètres dans iOS 10.

Vous pouvez essayer d'ouvrir la page des paramètres à l'aide de l'API "zone grise" comme suit. Mais je n'ai pas réussi à Swift. Bonne chance!

Le schéma d'URL "prefs" n'est pas payant sous iOS 10 (Beta 1 & 2)

5
User9527

J'ai trouvé un moyen d'ouvrir l'application de paramètres dans iOS en ajoutant un ensemble de paramètres à mon projet et en utilisant le code suivant:

    let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
    UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)

Il semble que ce soit le seul moyen que vous pouvez utiliser pour ouvrir une application de paramètres natifs si votre application ne possède pas de clavier personnalisé.

L'ouverture de UIApplicationOpenSettingsURLString bloque l'application.

J'utilise l'URL "App-Prefs: root = WIFI" et cela fonctionne bien.

let settingsUrl = URL(string: "App-Prefs:root=WIFI")
        if UIApplication.shared.canOpenURL(settingsUrl!) {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(settingsUrl!, options: [:], completionHandler: {(success) in debugPrint("Successfully opened settings")})
            } else {
                UIApplication.shared.openURL(settingsUrl!)
            }
    }
0
Jala Ganapathy