2016-04-24 2 views
2

ich die folgende Funktion bin mit zu erfassen, wenn meine Anwendung über eine Kraft Touch Verknüpfung geöffnet wird:iOS Anwendungsfunktion innerhalb AppDelegate für, wenn sie ohne Verknüpfung geöffnet

@available(iOS 9.0, *) 
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { 
    print("doing performActionForShortcutItem") 
    completionHandler(handleShortcut(shortcutItem)) 
} 

Gibt es eine andere Art und Weise in meiner AppDelegate.swift Datei zu erkennen Wenn die Anwendung ohne eine Verknüpfung geöffnet wird?

+0

Blick auf alle der 'UIApplicationDelegate' Methoden. Es gibt mehrere, die für verschiedene Auslöser aufgerufen werden, die Ihre App aufrufen. – rmaddy

+0

@rpaddy - Ich bin durch die Liste gegangen, obwohl keine auffallen, was ich genau erreichen möchte ... – Fizzix

+0

Und was versuchst du genau zu erreichen? – rmaddy

Antwort

3

Wenn aktiviert über eine Verknüpfung, (Ihre App wurde bereits gestartet, ist aber nicht aktiv) application:performActionForShortcutItem:completionHandler: wird aufgerufen.

Wenn über eine Verknüpfung gestartet, das launchOptions Wörterbuch von application:didFinishLaunchingWithOptions: eine Schlüssel UIApplicationLaunchOptionsShortcutItemKey enthalten.

Wenn dieser Schlüssel nicht vorhanden ist, wurde Ihre Anwendung nicht über eine Verknüpfung gestartet.

Wenn Sie testen, dass ein Wert für diesen Schlüssel nicht vorhanden ist, werden Sie wissen, dass Ihre App nicht über eine Verknüpfung gestartet wurde.

In application:didFinishLaunchingWithOptions: müssen Sie etwas wie folgt aus:

let launchedByShortcut = launchOptions?[UIApplicationLaunchOptionsShortcutItemKey] != nil 

if (!launchedByShortcut) { 
    // the app wasn't launched via a shortcut 
} 
+0

Scheint der richtige Weg zu sein, obwohl ein Fehler beim Öffnen der App ohne Verknüpfungen ausgelöst wird. http://postimg.org/image/pgc0lm1j5/ – Fizzix

+0

Ich glaube, es ist wahrscheinlich, weil 'launchOptions'' nil' ist, und es nicht finden kann, 'UIApplicationLaunchOptionsShortcutItemKey' von' nil'. – Fizzix

+0

Das ist richtig. Ich habe gerade meine Antwort aktualisiert, um diesen Fall zu behandeln. Das "let" behandelt nun den Fall, in dem "launchOptions" auf "nil" steht. – stevekohls

Verwandte Themen