Открыть представление при нажатии на push-сообщение в приложении swift

#push-notification #swift5

Вопрос:

Я создаю приложение для iOS с помощью Swift5. Это приложение может получать push-сообщения из моего веб-приложения php с помощью Firebase.

Теперь я могу отображать push-сообщение на iPhone, когда iphone заблокирован, а приложение не запущено. Теперь я могу отправить какое-либо push-сообщение, и если пользователь нажмет на него, приложение должно отображать представление с определенным входным параметром. Но представление-это не то же самое представление, может измениться в базе PushMessage. Например, если вы получаете push-сообщение для приложения whatsup и нажимаете на него, приложение отображает непосредственно чат пользователя, а не другой чат.

Теперь это мой код, что я могу сделать для его реализации?

 func configureNotification() {

        if #available(iOS 10.0, *) {
            let center = UNUserNotificationCenter.current()
            center.requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error) in }
        }
        UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
        UIApplication.shared.registerForRemoteNotifications()
    }
    func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
        Messaging.messaging().token { token, error in
            if let error = error {
                print("Error fetching FCM registration token: (error)")
            } else if let token = token {
                print("FCM registration token: (token)")
                USER_DEFAULT.set(token, forKey: IOS_TOKEN)
            }
        }
    }

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let deviceTokenString = deviceToken.reduce("", {$0   String(format: "X", $1)})
       // k.iosRegisterId = deviceTokenString
        Messaging.messaging().apnsToken = deviceToken
        print("APNs device token: (deviceTokenString)")
       // USER_DEFAULT.set(deviceTokenString, forKey: IOS_TOKEN)

    }
    
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        print("APNs registration failed: (error)")
        
    }
    
    // MARK:-  Received Remote Notification
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
            Messaging.messaging().appDidReceiveMessage(userInfo)
            print("main method - (userInfo)")
      
        if let info = userInfo as? Dictionary<String, AnyObject> {
            //let alert1 = info["aps"]!["alert"] as! Dictionary<String, AnyObject>
            let title = userInfo["gcm.notification.status"] as! String
            hanleNotification(info: info, strStatus: title, strFrom: "Front")
        }

        completionHandler(UIBackgroundFetchResult.newData)
    }