Как выполнить действие при нажатии Push-уведомления, а не выполнять действие самостоятельно, когда приложение находится на переднем плане? - PullRequest
0 голосов
/ 26 сентября 2018

В настоящее время я использую указанный ниже код

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void){
    completionHandler(.alert)
    let aps = notification.request.content.userInfo[AnyHashable("aps")] as! NSDictionary
    let alert = aps["alert"] as! String
    if alert == "Welcome to XYZ. To place order please click here"{
        let stryBrd = UIStoryboard(name: "Main", bundle: nil)
        let vc = stryBrd.instantiateViewController(withIdentifier: "viewController")  as! viewController
        self.window?.rootViewController = vc
    }else{
        print("false")
    }
}

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

В то время как в фоновом режиме приложение работает нормально.Это происходит только в том случае, если мы нажимаем на уведомление

. Оно должно совпадать с WhatsApp.Когда вы общаетесь с Mr ABC и Miss PQR отправляет вам текст, он будет показывать push, но ничего не будет делать, если вы не нажмете на push, чтобы открыть чат Miss PQR

1 Ответ

0 голосов
/ 26 сентября 2018

Используйте UIAlertController для отображения push-уведомлений и при нажатии кнопки введите код для выполнения действия

    let stryBrd = UIStoryboard(name: "Main", bundle: nil)
    let vc = stryBrd.instantiateViewController(withIdentifier: "viewController")  as! viewController
    self.window?.rootViewController = vc

Дополнительные пояснения:

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void){
    completionHandler(.alert)
    let aps = notification.request.content.userInfo[AnyHashable("aps")] as! NSDictionary
    let alert = aps["alert"] as! String
    if alert == "Welcome to XYZ. To place order please click here"{

        //show alert to the user after getting push notification

        let myalert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
        myalert.addAction(UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in

            //perform action of push notification

            let stryBrd = UIStoryboard(name: "Main", bundle: nil)
            let vc = stryBrd.instantiateViewController(withIdentifier: "viewController")  as! viewController
            self.window?.rootViewController = vc
        })
        myalert.addAction(UIAlertAction(title: "Cancel", style: .cancel) { (action:UIAlertAction!) in
            //handle cancel event
        })

        currentViewController.present(myalert, animated: true)
    }else{
        print("false")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...