Tengo una aplicación de iOS a la que se envían algunas notificaciones push. Mi problema es que los mensajes / notificaciones permanecen en el Centro de notificaciones en iOS después de pulsarlos. ¿Cómo puedo eliminar una notificación de mi aplicación en el Centro de notificaciones la próxima vez que se abra la aplicación?
Me encontré con publicaciones en las que las personas están llamando setApplicationIconBadgeNumber
a un valor cero para borrar las notificaciones. Eso me parece muy extraño, así que creo que tal vez exista otra solución.
EDIT1:
Tengo algunos problemas para borrar las notificaciones. Por favor vea mi código aquí:
- (void) clearNotifications {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self clearNotifications];
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self clearNotifications];
}
Estoy ejecutando la aplicación a través de Xcode. Cuando la aplicación se minimiza e inicio la aplicación usando la notificación en el centro de notificaciones, puedo ver en el registro que didReceiveRemoteNotification
se llama y usando puntos de interrupción puedo ver que se clearNotifications
ha ejecutado. Pero aún así, la notificación se cuelga en el Centro de notificaciones. ¿Por qué?
let center = UNUserNotificationCenter.current() center.removeAllDeliveredNotifications() // To remove all delivered notifications
stackoverflow.com/a/40397907/1155650Solo para ampliar la respuesta de pcperini. Como menciona, deberá agregar el siguiente código a su
application:didFinishLaunchingWithOptions:
método;Usted también necesita de la subasta a continuación, disminuir la insignia en su
application:didReceiveRemoteNotification:
método si está tratando de borrar el mensaje desde el centro de mensajes para que cuando un usuario entra en aplicación desde que pulsar una notificación del centro de mensajes también está claro, es decir;fuente
También podría tener sentido agregar una llamada a clearNotifications en applicationDidBecomeActive para que, en caso de que la aplicación esté en segundo plano y regrese, también borre las notificaciones.
fuente
Actualización para iOS 10 (Swift 3)
Para borrar todas las notificaciones locales en las aplicaciones de iOS 10, debe usar el siguiente código:
Este código maneja la eliminación de notificaciones locales para iOS 10.xy todas las versiones anteriores de iOS. Necesitará
import UserNotifications
el código iOS 10.x.fuente
Si tiene notificaciones locales programadas pendientes y no desea utilizarlas
cancelAllLocalNotifications
para borrar las antiguas en el Centro de notificaciones, también puede hacer lo siguiente:Parece que si configura el
scheduledLocalNotifications
, borra los antiguos en el Centro de notificaciones y, al configurarlo para sí mismo, conserva las notificaciones locales pendientes.fuente
applicationDidBecomeActive:
como en losapplication:didReceiveLocalNotification:
métodos.En Swift estoy usando el siguiente código dentro de mi AppDelegate:
fuente
Si vienes aquí pensando lo contrario (como yo), esta publicación puede ser para ti.
No pude entender por qué mis notificaciones se borraban cuando borré la insignia ... Incremento manualmente la insignia y luego quiero borrarla cuando el usuario ingresa a la aplicación. Sin embargo, esa no es razón para limpiar el centro de notificaciones; es posible que aún quieran ver o actuar sobre esas notificaciones.
El negativo 1 funciona, afortunadamente:
fuente
Tal vez en caso de que haya alarmas programadas e insignias de iconos de aplicaciones sin borrar.
fuente
Cuando tenga notificaciones repetidas en el futuro, no desea cancelar esas notificaciones, puede borrar el elemento en el centro de notificaciones de la siguiente manera:
No puede borrar la notificación cuando su aplicación está abierta en primer plano llamando al método a continuación inmediatamente después de recibir la notificación local; de lo contrario, recibirá decenas de cientos de notificaciones. Tal vez porque la misma notificación se aplica nuevamente, y ahora es el momento de disparar, así que mantienes el fuego, aplica de nuevo, dispara, aplica ....:
fuente
Cuando cierre la sesión de su aplicación, en ese momento tendrá que utilizar una línea de código a continuación en el método de clic del botón de cierre de sesión.
y esto funciona perfectamente en mi aplicación.
fuente
Debe agregar el siguiente código en su
applicationDidBecomeActive
método AppDelegate .fuente
Lo conseguí de aquí . Funciona para iOS 9
fuente