Открывайте приложение в специальном представлении, когда пользователь нажимает на push-уведомление с iOS 13 Swift 5 - PullRequest
2 голосов
/ 21 ноября 2019

Мое приложение позволяет удаленные push-уведомления для пользователя. Как мне разрешить его открытие в определенном контроллере представления, когда пользователь нажимает на push-уведомление? Я хочу, чтобы приложение открывалось и переходило к определенному контроллеру представления в зависимости от полученного push-уведомления.

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Вы можете вызвать уведомление , как только вы получите уведомление, и пользователь нажмет на уведомление.

Наряду с уведомлением вы можете передать значение, которое позже будет использоваться для определения того, какой видконтроллер, по которому нужно перемещаться.

Создайте класс, который будет отвечать за всю обработку навигации по push-уведомлениям. Вы можете назвать его как PushNotificationHandler . Пусть обработчик PushNotificationHandler позаботится обо всей логике, чтобы перейти к контроллерам представления.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
} 
  • Получить значение из глубокой ссылки, используя вышеуказанный метод делегата
  • Инициировать уведомлениесо значением
  • Обрабатывать уведомление внутри PushNotificationHandler class
1 голос
/ 21 ноября 2019

Вы должны проверить, когда ваше приложение находится в закрытом состоянии, используя опцию запуска в "func application" (_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {:

 if let option = launchOptions {
    let info = option[UIApplication.LaunchOptionsKey.remoteNotification]
         if (info != nil) {
            self.goAnotherVC()
     }
}

и, видимо, загрузил в ваш посадочный ВК установленный наблюдатель

 NotificationCenter.default.addObserver(self, selector: #selector(self.goToVc(notification:)), name:NSNotification.Name(rawValue:identifier), object: nil)

Метод выбора:

 func goToVc(notification:Notification) {
     let storyboard = UIStoryboard(name: "Main", bundle: nil)
     let vc = storyboard.instantiateViewController(withIdentifier:"landingVC") as! landingVC
     self.navigationController?.pushViewController(vc, animated: true)  
}

В приложении делегат:

func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
     NotificationCenter.default.post(name:NSNotification.Name(identifier), object: userInfo)
  }
...