iOS 10.0 * Manejar notificación push en primer plano

Si implemento el método para presentar notifications push en ios 10.0

@available(iOS 10.0, *) func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { completionHandler(UNNotificationPresentationOptions.alert) } 

entonces presenta toda la notificación. Entonces, mi pregunta es cómo puedo evitar mostrar una notificación de envío particular como (iniciar session en otro dispositivo). Simplemente manejo el código para ese envío en particular

Según la documentation oficial:

// El método se llamará al delegado solo si la aplicación está en primer plano. Si el método no se implementa o el manejador no se llama de manera oportuna, entonces la notificación no se presentará. La aplicación puede elegir que la notificación se presente como un sonido, insignia, alerta y / o en la list de notifications. Esta decisión debe basarse en si la información en la notificación es visible para el usuario.

 - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0); 

Entonces, para responder a su pregunta, si desea evitar que se muestre la notificación, no implemente este método o no llame al controller.

Espero eso ayude.

Mis datos push son

 { "aps" : { "alert" : { "id" : 2091 }, "sound" : "chime.aiff" }, "acme" : "foo" } 

He usado id porque puedo separar cada impulso por su ID, y basado en ID puedo decidir el clima para mostrar la notificación en primer plano o no …

Gracias @ Anbu.Karthik Para reference según mi pregunta, podemos manejar push even user no presionó la notificación en

  @available(iOS 10.0, *) func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { print("Handle push from foreground") let userInfo:[AnyHashable:Any] = notification.request.content.userInfo let aps:NSDictionary = (userInfo[AnyHashable("aps")] as? NSDictionary)! let alert:NSDictionary = (aps["alert"] as? NSDictionary)! let id = Int(alert["id"] as! Int) if id == your id { //Handle push without prompting alert } else { //Display alert completionHandler(UNNotificationPresentationOptions.alert) } } 

Y cuando el usuario presiona la notificación, el método siguiente se llama …

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