从ios 11中的本地通知打开视图控制器

时间:2018-08-01 06:15:03

标签: ios swift push-notification swift4 ios11

我有一个ios 11应用程序,该应用程序在给定时间使用本地推送通知来处理剩余部分。本地通知有效,并且在滑动时会打开我的应用程序的主视图。我的应用程序的主视图是uitableviewcontroller。提醒是表格视图中的行。

如果单击提醒,则将打开self.presentview的新视图控制器...新视图将在表视图上弹出。我没有使用情节提要或Xib文件,而是通过编程方式进行的。

如何将提醒ID传递给推送通知并返回到应用程序,然后使该提醒ID打开第二个视图控制器?第二个视图控制器具有有关提醒的更多详细信息。

2 个答案:

答案 0 :(得分:0)

在安排本地通知时,您可以在userInfo

中设置所需的详细信息
let notification = UILocalNotification()
    notification.fireDate = date
    notification.alertBody = "Alert!"
    notification.alertAction = "open"
    notification.hasAction = true
    notification.userInfo = ["reminderID": "222" ]

您将在didReceiveRemoteNotification

中获得userInfo。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {

        print("didReceiveRemoteNotificationfetchCompletionHandler \(userInfo)")

/// HANDLE NAVIGATION HERE 



    }

答案 1 :(得分:0)

以anuraj的答案为基础。在userInfo

中设置所需的详细信息

然后使用以下方法(在appDelegate.swift中处理导航)

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {

      print("didReceiveRemoteNotificationfetchCompletionHandler \(userInfo)")
      let id = userInfo["reminderID"] as! String
      /// HANDLE NAVIGATION HERE
      if let tableVC = self.window?.rootViewController as? yourTableViewControllerClass {
        let reminderDetailsVC = yourReminderDetailsVC()
        reminderDetailsVC.reminderID = id
        tableVC.present(reminderDetailsVC, animated: true)
      }


    }

让我知道您是否需要任何帮助