2016-10-16 2 views
-1

Ich habe versucht, diese Funktion mit den Parametern aus der benutzerdefinierten URL erhalten:Wie mit benutzerdefinierten URL-Schemas in Swift (XCode 8) umgehen?

func application(_ application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { 
    return true; 
} 

Allerdings ist die Funktion nie aufgerufen und ich erhalte Warnung: „Instanz-Methode‚Anwendung (: openURL: sourceApplication: Anmerkung :) ‚beinahe entspricht optionales Argument‚Anwendung (: offen: sourceApplication:.. Anmerkung :)‘des Protokolls‘ UIApplicationDelegate

Basierend auf XCode 8 Warning "Instance method nearly matches optional requirement" habe ich versucht, ohne Erfolg mit @objc Wie kann ich eine Funktion bauen, die aufgerufen wird, wenn Die App ist geöffnet und gibt mir die Parameter aus dem benutzerdefinierten URL-Schema?

+0

Warum nicht Sie die akzeptierte Antwort upvote? Dieser Benutzer hat sich die Zeit genommen, dir zu helfen! –

Antwort

5

Siehe Dokumentation für UIApplicationDelegate. Unter Swift 3 die delegierte Methode ist:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 
    return true; 
} 

Nicht

func application(_ application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { 
    return true; 
} 

Aber das ist man sowieso veraltet. Sie sollten (mit iOS 9.0 und höher) verwenden:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    return true; 
}