从 fcm 推送通知实例化视图控制器
instantiate view controller from fcm push notification
因此,出于某种原因,从 AppDelegate
实例化时始终存在问题。我有一个带有 UNNotificationAction
的通知,我在 didReceiveResponse()
方法中处理 selection 操作。
函数如下:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// Print message ID.
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}
if response.actionIdentifier == "viewNewEvent" {
let dashVC: UIViewController = storyboard.instantiateViewController(withIdentifier: Constants.StoryboardIDs.StudentEventDashboardStoryboardID) as! StudentSegmentedTableViewController
let navDashVC = UINavigationController(rootViewController: dashVC)
self.window?.rootViewController = navDashVC
self.window?.makeKeyAndVisible()
}
print(userInfo)
print("didReceiveResponse called")
completionHandler()
}
当我 select 通知中的操作时,if
语句中的代码块永远不会 运行s。起初,我强行解包所有东西,我得到一个错误,说 viewController 是零,现在当我 运行 和 select 通知中的操作时,没有任何反应。
viewController怎么会是零呢?我遇到过类似的问题,因此决定改为在 SceneDelegate
中尝试,它确实有效,但有太多错误需要我最终修复。
在这种情况下,我是否最好使用 UIScene
和 UIWindowScene
而不是仅 UIWindow
来尝试实例化正确的 VC?或者有解决办法吗?
好的,经过几个小时的研究,我意识到这不能再在 AppDelegate
中完成,我现在必须使用 SceneDelegate 来处理与 UIWindow
和UIScene.
因此,出于某种原因,从 AppDelegate
实例化时始终存在问题。我有一个带有 UNNotificationAction
的通知,我在 didReceiveResponse()
方法中处理 selection 操作。
函数如下:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// Print message ID.
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}
if response.actionIdentifier == "viewNewEvent" {
let dashVC: UIViewController = storyboard.instantiateViewController(withIdentifier: Constants.StoryboardIDs.StudentEventDashboardStoryboardID) as! StudentSegmentedTableViewController
let navDashVC = UINavigationController(rootViewController: dashVC)
self.window?.rootViewController = navDashVC
self.window?.makeKeyAndVisible()
}
print(userInfo)
print("didReceiveResponse called")
completionHandler()
}
当我 select 通知中的操作时,if
语句中的代码块永远不会 运行s。起初,我强行解包所有东西,我得到一个错误,说 viewController 是零,现在当我 运行 和 select 通知中的操作时,没有任何反应。
viewController怎么会是零呢?我遇到过类似的问题,因此决定改为在 SceneDelegate
中尝试,它确实有效,但有太多错误需要我最终修复。
在这种情况下,我是否最好使用 UIScene
和 UIWindowScene
而不是仅 UIWindow
来尝试实例化正确的 VC?或者有解决办法吗?
好的,经过几个小时的研究,我意识到这不能再在 AppDelegate
中完成,我现在必须使用 SceneDelegate 来处理与 UIWindow
和UIScene.