La mia app consente di inviare notifiche push remote a un utente. Come posso abilitare l'apertura in uno specifico controller di visualizzazione quando l'utente tocca la notifica push? Voglio che l'app si apra e passi a un controller di visualizzazione specifico in base alla notifica push ricevuta.Apri l'app in una vista specifica quando l'utente tocca la notifica push con iOS Swift
risposta
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:
Nella tua
PFPush
, utilizzaresetData
per aggiungere una chiave per il vostro carico con l'identificatore:notification.setData(["alert":"your notification string", "identifier":"firstController"])
Impostare la
identifier
su ogniViewController
selezionandolo e modificando i seguenti valori
- Fai la tua Push Notification inviare il ID storyboard nella sua
payload
con la chiaveidentifier
- 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
}
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.
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
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
{
[self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}
Sto usando PFPush e al momento, la mia notifica push contiene solo una stringa di testo – mechdon
@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
@mechdon come avevi intenzione di specificare il 'ViewController' per aprire però? – kabiroberai