2014-10-29 5 views
8

In una classe Swift AppDelegate, si ottiene il seguente metodo:Come gestire launchOptions: [NSObject: AnyObject]? in Swift?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // ...code... 
    return true 
} 

Il parametro launchOptions: [NSObject: AnyObject]? è un optional. In Objective-C questo è passato come NSDictionary. Sto cercando di estrarre lo UIApplicationLaunchOptionsRemoteNotificationKey da esso. Ecco come è fatto in Objective-C:

NSDictionary *remoteNotification = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; 

if (remoteNotification) 
{ 
    // ...do stuff... 
} 

Come procederesti a farlo in Swift?

risposta

27

In Swift, lo faresti in questo modo:

if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary { 
    // ...do stuff... 
} 
+1

come è possibile accedere allo schermato che contiene RemoteNotification. Come deve essere lanciata l'app da una notifica push mentre l'app è collegata a xcode? –

+0

Il modo migliore per vedere cosa sta realmente accadendo sarebbe quello di gettare un UIAlertView con il messaggio come contenuto della dichiarazione di stampa che altrimenti si registrerebbe. –

1

mi occupo in Swift in questo modo:

if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] { 
    // ... do stuff 
} 
0

Penso che per Swift 3, sarebbe come questo:

if (launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary) != nil { 
    // ...do stuff   
}