2015-11-14 9 views

risposta

19

Per fare questo è necessario impostare un identifier per ogni ViewController che la vostra applicazione può essere aperto con, e quindi controllare il payload nel launchOptions argomento application:didFinishLaunchingWithOptions: nel vostro AppDelegate Ecco i passi per fare questo:

  1. Nella tua PFPush, utilizzare setData per aggiungere una chiave per il vostro carico con l'identificatore: notification.setData(["alert":"your notification string", "identifier":"firstController"])

  2. Impostare la identifier su ogni ViewController selezionandolo e modificando i seguenti valori

Setting the Storyboard ID

  1. Fai la tua Push Notification inviare il ID storyboard nella sua payload con la chiave identifier
  1. Verificare l'ID nell'applicazione: didFinishLaunchingWithOptions: aggiungendo quanto segue al termine della funzione:
if let payload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary, identifier = payload["identifier"] as? String { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc = storyboard.instantiateViewControllerWithIdentifier(identifier) 
    window?.rootViewController = vc 
} 
+0

Sto usando PFPush e al momento, la mia notifica push contiene solo una stringa di testo – mechdon

+0

@mechdon invia i dati insieme al push utilizzando il metodo 'setData' nella notifica push con un' ["identificatore" del dizionario: " firstController "]' o qualunque sia il tuo identificatore dovrebbe essere – kabiroberai

+0

@mechdon come avevi intenzione di specificare il 'ViewController' per aprire però? – kabiroberai

2

In AppDelegate, si otterrà un metodo di chiamata delegato "didFinishLoading" o "didReceivePushNotification" (basato sulla propria app in background o in primo piano). In questo metodo, ottenere l'istanza più in alto del controller di visualizzazione, quindi creare il controller di visualizzazione specifico che si desidera mostrare e presentare/premere dal controller di visualizzazione più in alto.

+3

Satyam, grazie per la risposta, che è anche corretto. Ma ho dato la risposta di kabiroberai al tick, perché la sua è la soluzione più completa alla mia domanda. – mechdon

0
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
    if (notification) 
    { 
     [self application:application didReceiveRemoteNotification:(NSDictionary*)notification]; 
    }