2015-04-08 11 views

risposta

1

Nell'applicazione: didReceiveRemoteNotification: fetchCompletionHandler, i dati personalizzati vengono trasferiti a didReceiveRemoteNotification, che è un NSDictionary. I dettagli che si desidera recuperare sono probabilmente nella chiave "aps" di userInfo.

func application(application: UIApplication, didReceiveRemoteNotification userInfo: NSDictionary!) 
{ 
    var notificationDetails: NSDictionary = userInfo.objectForKey("aps") as NSDictionary 
} 

Quando l'applicazione non viene avviato, è necessario farlo dall'applicazione: didFinishedLaunchWithOptions,

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    if let launchOpts = launchOptions { 
     var notificationDetails: NSDictionary = launchOpts.objectForKey(UIApplicationLaunchOptionsRemoteNotificationKey) as NSDictionary 
    } 

    return true 
} 

EDIT: Notifica remota Fix sintassi

+0

Ok. E cosa faccio dopo? Come ottengo il valore da "notifica"? – Aerofan

+0

Si accede alla proprietà userInfo di UILocalNotification, che è un NSDictionary –

+0

Penso che si stia mescolando Objective-C e Swift con questo codice. – Aerofan

4

Ecco ciò che funziona per me in SWIFT 2 quando la tua app non viene avviata. Il codice non è abbastanza elegante a causa delle associazioni opzionali. Ma funziona.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // if launched from a tap on a notification 
    if let launchOptions = launchOptions { 
     if let userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] { 
      if let action = userInfo["action"], id = userInfo["id"] { 
       let rootViewController = self.window!.rootViewController as! ViewController 
       let _ = setTimeout(5.0, block: {() -> Void in 
        rootViewController.openNotification(action as! String, id: id as! String) 
       }) 

      } 
     } 
    } 
    return true 
}