2017-03-05 4 views
0

Je reçois plusieurs notifications locales dans mon application à différents moments. Je souhaite lancer différents contrôleurs de vue pour mon application en fonction de la notification locale reçue. Je connais les options de lancement dans didfinishlaunching et didreceive notifications Mais je ne sais pas comment détecter quelle notification est reçue et prendre des mesures en fonction de la notification reçue.Même lorsque j'ai réussi à le faire, le problème est que je suis en mesure d'ouvrir une vue contrôleur du délégué de l'application, mais il n'est plus attaché au contrôleur de navigation qu'il est autrement attaché au storyboard. Comment faire ça? Voici mon code:comment lancer différents contrôleurs de vue pour différentes notifications locales dans ios 10

func application(_ application: UIApplication, didReceive notification: UILocalNotification) { 


     let storyboard = UIStoryboard(name: "Main", bundle: nil) 

     let customViewController:WebViewController = storyboard.instantiateViewController(withIdentifier: "webVC") as! WebViewController 

     let index=Constants.instructionsData.count - 1 
     customViewController.url=Constants.instructionsData[index].weblink! 
     self.window = UIWindow(frame: UIScreen.main.bounds) 
     self.window?.rootViewController = customViewController 
     self.window?.makeKeyAndVisible() 

    } 

Répondre

0

Vous souhaitez utiliser la notification dans iOS 10, donc je comprends que vous voulez utiliser UNNotification. Lorsque vous utilisez UNNotificationRequest, il y a un argument appelé identificateur. Vous pouvez l'utiliser pour distinguer, quelle notification envoie cette requête. Si vous utilisez les "anciennes" notifications, vous donnez simplement un sélecteur qui sera exécuté lors de la réception de la notification.

Édité: Dans votre code, vous modifiez le contrôleur de la vue racine, alors comment voulez-vous que le contrôleur de navigation dure? Vous n'utilisez pas de segues. essayer:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let customViewController:WebViewController = storyboard.instantiateViewController(withIdentifier: "webVC") as! WebViewController 
self.window?.rootViewController?.navigationController?.pushViewController(customViewController, animated: true) 
+0

quelle est la méthode pour obtenir l'identifiant de la notification dans la notification didreceive –

+0

essayer response.notification.request.identifier – Axel

+0

Mate, je réussi à le faire et le problème est que je suis en mesure d'ouvrir un contrôleur de vue du délégué de l'application mais il n'est plus attaché au contrôleur de navigation qu'il est par ailleurs attaché au storyboard. Comment faire ça? –