Firebase推送通知操作

我刚刚用swift编写了我的第一个应用程序。Firebase工作良好,我在我的设备上收到通知。 我想要做的是当用户点击通知时设置操作。 我想发送到特定的ProductViewController,具有特定的产品ID(从后端发送)。 如果用户被locking到ProductViewController,则不保留在login屏幕上。

AppDelegate.swift代码:

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, FIRMessagingDelegate { var window: UIWindow? func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) { print(remoteMessage.appData) } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. let lagFreeField = UITextField() self.window?.addSubview(lagFreeField) lagFreeField.becomeFirstResponder() lagFreeField.resignFirstResponder() lagFreeField.removeFromSuperview() // [START register_for_notifications] if #available(iOS 10.0, *) { let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: {_,_ in }) // For iOS 10 display notification (sent via APNS) UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate // For iOS 10 data message (sent via FCM) FIRMessaging.messaging().remoteMessageDelegate = self as? FIRMessagingDelegate } else { let settings = UIUserNotificationSettings(types: [.alert, .badge , .sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() } application.registerForRemoteNotifications() // [END register_for_notifications] FIRApp.configure() print("AppDelegate") IQKeyboardManager.sharedManager().enable = true self.window = UIWindow(frame: UIScreen.main.bounds) let storyboard = UIStoryboard(name: "Main", bundle: nil) let tab = storyboard.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController self.window?.rootViewController = tab if Defaults.hasKey(.logged), let logged = Defaults[.logged], logged == true{ APIRequest.username = Defaults[.username]! APIRequest.password = Defaults[.password]! let tab = storyboard.instantiateViewController(withIdentifier: "TabBarController") as! UITabBarController self.window?.rootViewController = tab } else { let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController") self.window?.rootViewController = controller } self.window?.makeKeyAndVisible() return true } func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { print("Userinfo \(userInfo)") } ... other default functions 

你需要用想要打开的viewController的标识符来触发一个segue ..

 self.performSegue(withIdentifier: "ProductViewControllerSegue",sender: nil) 

你也需要通过你的故事板来设置segue,以达到这个目的。