Я новичок в Swift и пытаюсь интегрировать его с push-уведомлениями из firebase. Само push-уведомление работает просто отлично, но у меня возникают трудности при открытии определенного вида при прикосновении к уведомлению.
Сначала я попытался инициализировать контроллер корневого представления методом instantaiteViewController, но это не сработало, поэтому я во-вторыхпопробовал, если я могу выполнить переход с контроллера начального представления, когда пользователь нажимает на уведомление.
Второе решение - это то, чего я хочу достичь в настоящее время. И вызов метода execute segue из «ответа didReceive: UNNotificationResponse» из UNUserNotificationCenterDelegate
Кажется, он выполняет переход. проверка путем печати строки в ViewDidLoad()
и ViewWillApear
целевого ViewController.
За исключением того, что на экране не отображается ее. На экране все еще отображается начальный контроллер вида даже после запуска конечного контроллера вида ViewDidload
Это жизненный цикл или он просто не в состоянии это сделать?
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}
let notification = response.notification
if notification.request.trigger is UNPushNotificationTrigger{
print("didRecieve Push Notification")
}else{
print("did Recieve Local Notification")
}
print("notification.requset.identifier: \(notification.request.identifier)")
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name:"Main",bundle: nil)
print(storyboard)
if let userShowCase = storyboard.instantiateViewController(withIdentifier:"userShowCase") as? userShowCaseViewController {
print(storyboard)
self.window?.rootViewController = userShowCase
self.window?.makeKeyAndVisible()
userShowCase.performSegue(withIdentifier: "showCase2Login", sender: userShowCase)
}
completionHandler()
}