Estoy usando el servicio de notificaciones push en mi aplicación. Cuando la aplicación está en segundo plano, puedo ver notificaciones en la pantalla de notificaciones (pantalla que se muestra cuando deslizamos hacia abajo desde la parte superior del dispositivo iOS). Pero si la aplicación está en primer plano, el método delegado
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
se llama pero no se muestra la notificación en la pantalla de notificación.
Quiero mostrar notificaciones en la pantalla de notificaciones independientemente de si la aplicación está en segundo plano o en primer plano. Estoy cansado de buscar una solución. Cualquier ayuda es muy apreciada.
iphone
ios
objective-c
push-notification
Ab'initio
fuente
fuente
Respuestas:
Para mostrar un mensaje de banner mientras la aplicación está en primer plano, use el siguiente método.
iOS 10, Swift 3/4 :
iOS 10, Swift 2.3 :
También debe registrar su delegado de aplicaciones como delegado para el centro de notificaciones:
fuente
UNUserNotificationsCenter.current().delegate = self
en la aplicación didFinishLaunchingWithOptionsEl siguiente código funcionará para usted:
fuente
title
es un texto en negrita ligeramente más grande y elmessage
texto más pequeño debajo de eso. Un botón 'Aceptar' para descartar está en la parte inferior). La opción applicationIconBadgeNumber que se establece en 0 es ocultar el número que aparece en la parte superior del icono de la aplicación en Springboard (por ejemplo, el número de mensajes no leídos en una aplicación de correo). En este ejemplo, no sé si esa opción es necesaria.Para cualquiera que esté interesado, terminé creando una vista personalizada que se parece al banner de inserción del sistema en la parte superior, pero agrega un botón de cierre (pequeña X azul) y una opción para tocar el mensaje para una acción personalizada. También admite el caso de más de una notificación recibida antes de que el usuario tuviera tiempo de leer / descartar las antiguas (sin límite de cuántas se pueden acumular ...)
Enlace a GitHub: AGPushNote
El uso es básicamente en línea:
Y se ve así en iOS7 (iOS6 tiene una apariencia de iOS6 ...)
fuente
C objetivo
Porque
iOS 10
necesitamos integrar elwillPresentNotification
método para mostrar el banner de notificación enforeground
.Si la aplicación está en modo de primer plano (activa)
fuente
Si la aplicación se ejecuta en primer plano, iOS no mostrará un banner / alerta de notificación. Eso es por diseño. Pero podemos lograrlo usando
UILocalNotification
lo siguienteCompruebe si la aplicación está en estado activo al recibir una
notificación remota . Si está en estado activo, dispare una Notificación UILocal.
RÁPIDO:
fuente
If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
Si la aplicación se ejecuta en primer plano, iOS no mostrará un banner / alerta de notificación. Eso es por diseño. Tienes que escribir un código para lidiar con la situación de que tu aplicación reciba una notificación mientras está en primer plano. Debe mostrar la notificación de la manera más adecuada (por ejemplo, agregar un número de insignia a un
UITabBar
icono, simular un banner del Centro de notificaciones, etc.).fuente
UNUserNotificationCenter
API). Junto con la nueva API, ahora es posible mostrar las notificaciones si la aplicación está en primer plano. Entonces, si está confundido debido a las diferentes respuestas en esta pregunta, es porque algunas de las respuestas son demasiado antiguas y solo describen el comportamiento para iOS 9 y anteriores, mientras que las otras no tienen en cuenta queUNUserNotificationCenter
solo está disponible en iOS 10.Xcode 10 Swift 4.2
Para mostrar notificaciones push cuando su aplicación está en primer plano:
Paso 1: agregue delegado UNUserNotificationCenterDelegate en la clase AppDelegate.
Paso 2: configurar el delegado UNUserNotificationCenter
Paso 3: este paso permitirá que su aplicación muestre notificaciones push incluso cuando su aplicación esté en primer plano
Paso 4: este paso es opcional . Compruebe si su aplicación está en primer plano y si está en primer plano, luego muestre Notificación local de inserción.
Función de notificación local
fuente
Segun apple documentación de , Sí, puede mostrar notificaciones mientras la aplicación se está ejecutando
fuente
UNUserNotificationCenterDelegate
protocoloviewDidLoad
extension AppDelegate: UNUserNotificationCenterDelegate
Puede crear su propia notificación que imite la alerta de banner.
Una forma es crear una vista personalizada que se parezca a la pancarta y pueda animar y responder a toques. Con esto en mente, puede crear pancartas aún mejores con aún más funcionalidad.
O puede buscar una API que lo haga por usted y agregarlas como archivos pod a su proyecto.
Aquí hay una pareja que he usado:
https://github.com/terryworona/TWMessageBarManager
https://github.com/toursprung/TSMessages
fuente
TWMessageBarManager
se puede invocar y usar fácilmente mediante appdelegate, ya que utiliza un patrón de diseño único. Gracias por los enlaces.Aquí está el código para recibir notificaciones push cuando la aplicación está en estado activo (primer plano o abierto). Documentación de UNUserNotificationCenter
Si necesita acceder a la información de usuario de la notificación, use el código:
notification.request.content.userInfo
fuente
Agregar esa línea completeHandler para delegar el método resolvió el mismo problema para mí:
fuente
Para que Swift 5 analice el diccionario PushNotification
Para obtener vista superior Controlador en el que mostramos topBanner
fuente
guard
declaración es tu amigo :-)En el delegado de su aplicación, use el siguiente código
fuente
Como se mencionó anteriormente, debe usar
UserNotification.framework
para lograr esto. Pero para mis propósitos, tengo que mostrarlo en la aplicación de todos modos y quería teneriOS 11
estilo, así que he creado una pequeña vista auxiliar, tal vez sería útil para alguien.Vista de notificaciones push de GitHub iOS 11 .
fuente
Mejor enfoque para esto es agregar
UNUserNotificationCenterDelegate
enAppDelegate
mediante el uso deextension AppDelegate: UNUserNotificationCenterDelegate
Esa extensión le dice a la aplicación para que pueda obtener una notificación cuando esté en usoE implementar este método
Este método se invocará en el delegado solo si la aplicación está en primer plano .
Entonces, la implementación final:
Y para llamar a esto, debe configurar el delegado en AppDelegate en
didFinishLaunchingWithOptions
agregar esta líneaPuedes modificar
con
fuente
Para Swift 5
¡Eso es!
fuente
Como @Danial Martine dijo, iOS no mostrará un banner / alerta de notificación. Eso es por diseño. Pero si realmente tiene que hacerlo, entonces hay una manera. También he logrado esto por igual.
1.Descargue el marco de análisis de Parse FrameWork
2.Importar
#import <Parse/Parse.h>
3.Agregue el siguiente código a su método didReceiveRemoteNotification
PFPush se encargará de cómo manejar la notificación remota. Si la aplicación está en primer plano, muestra la alerta; de lo contrario, muestra la notificación en la parte superior.
fuente
Si su aplicación está en primer plano, significa que actualmente está utilizando la misma aplicación. Por lo tanto, no es necesario mostrar notificaciones en la parte superior en general.
Pero aún así, si desea mostrar una notificación en ese caso, debe crear su Vista de alerta personalizada o Vista personalizada como Toast o algo más para mostrarle al usuario que recibió una notificación.
También puede mostrar una insignia en la parte superior si tiene ese tipo de función en su aplicación.
fuente