2015-12-31 11 views
5

Hier ist mein Problem: Ich arbeite an einer App, die CloudKit verwendet. Ich muss das Szenario übergeben, dass der Benutzer nicht in iCloud auf dem Gerät angemeldet ist. Ich möchte sie an die iCloud-Einstellungen senden und sie daran erinnern, dass iCloud-Daten für meine App aktiviert sein müssen. Ich verwende NSFileManager.defaultManager().ubiquityIdentityToken, um zu entscheiden, ob ich die iCloud-Einstellungen des Benutzers öffnen muss. Das Problem ist, ich kann nicht herausfinden, wie. Wie lautet die URL für die iCloud-Einstellungen des Geräts? Ich habe viel geforscht und weiß, dass ich nicht UIApplicationOpenSettingsURLString will. Dies öffnet die Einstellungen der App, nicht die Geräte. Dies wird nicht einfacher mit iOS 9 neue Sicherheitsfunktionen aus, die ich glaube, ich habe richtig eingerichtet:iOS 9: Deeplink zu iCloud-Einstellungen

enter image description here

+1

Sieht aus wie dies bereits hier eine Antwort hat (es ist nicht möglich) http://stackoverflow.com/questions/25988241/url-scheme-open-settings-ios – inorganik

+0

Sie nicht die App Einstellungen öffnen anders als für die Einstellungen Ihrer eigenen App. Und 'LSApplicationQueriesSchemes' hat damit überhaupt nichts zu tun. – rmaddy

+0

Ich hatte den Eindruck, dass LSApplicationQueriesSchemes eine Möglichkeit ist, URLs, die standardmäßig für die Sicherheit in iOS 9 blockiert wurden, auf die weiße Liste zu setzen. –

Antwort

0

Sie starten können iCloud Abschnitt der Einstellungen App. Ich habe dies sowohl auf iOS 9.3 und 10.2 getestet.

Die Schritte sind wie folgt:

  1. ein neues URL-Schema, um Ihre Anwendung von den Projekteinstellungen/Info/URL-Typen hinzufügen.

enter image description here

  1. Jetzt können Sie Einstellungen/iCloud App mit diesem Code öffnen.

    let iCloudURL = URL(string: "App-prefs:root=CASTLE") 
    if let settingsURL = iCloudURL { 
        UIApplication.shared.openURL(settingsURL) 
    } 
    

Hinweis für iOS 10. *: openURL Methode tatsächlich ist veraltet und Sie sollten die offenen mit Abschluss-Handler-Methode verwenden:

open(_ url: URL, 
    options: [String : Any] = [:], 
    completionHandler completion: ((Bool) -> Void)? = nil) 

Referenzen