web-dev-qa-db-fra.com

Ouvrez l'application dans une vue spécifique lorsque l'utilisateur appuie sur la notification Push avec iOS Swift

Mon application autorise les notifications Push à distance à un utilisateur. Comment puis-je l'activer pour qu'il soit ouvert dans un contrôleur de vue spécifique lorsque l'utilisateur appuie sur la notification Push? Je souhaite que l'application s'ouvre et accède à un contrôleur de vue spécifique en fonction de la notification Push reçue.

11
mechdon

Pour ce faire, vous devez définir une identifier pour chaque ViewController avec laquelle votre application peut être ouverte, puis vérifier la payload dans l'argument launchOptions de application:didFinishLaunchingWithOptions: dans votre AppDelegate. Voici comment procéder:

  1. Dans votre PFPush, utilisez setData pour ajouter une clé à votre charge utile avec l'identifiant: notification.setData(["alert":"your notification string", "identifier":"firstController"])

  2. Définissez la identifier sur chaque ViewController en la sélectionnant et en modifiant les valeurs suivantes

 Setting the Storyboard ID

  1. Faites en sorte que votre notification push envoie l’ID du storyboard dans sa payload avec la clé identifier
  1. Recherchez l'ID dans l'application: didFinishLaunchingWithOptions: en ajoutant les éléments suivants à la fin de la fonction:
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
}
22
kabiroberai

Dans AppDelegate, vous obtiendrez un rappel aux méthodes "didFinishLoading" ou "didReceivePushNotification" (selon que votre application est en arrière-plan ou au premier plan). Dans cette méthode, obtenez l'instance du contrôleur de vue la plus en haut, puis créez le contrôleur de vue que vous souhaitez afficher et présenter/Push à partir du contrôleur de vue le plus en haut.

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