priority notification body apns objective-c push-notification badge

objective c - notification - El número de placa del icono de la aplicación no aumenta: Xcode



push notification body (4)

Estoy enfrentando un problema con la actualización de valor de número de placa de aplicación de notificación de inserción.

Estoy haciendo como

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UIApplicationState state = [application applicationState]; if (state == UIApplicationStateActive) { // do stuff when app is active }else{ // do stuff when app is in background [UIApplication sharedApplication].applicationIconBadgeNumber = [UIApplication sharedApplication].applicationIconBadgeNumber+1; /* to increment icon badge number */ } }

Pero, el icono muestra el número de credencial como ''1'' siempre, y no se incrementa cuando hay más notificaciones / una notificación vino después de otra.

Cualquier consejo es apreciable ...


El sistema operativo establece el número de credencial cuando recibe una carga útil de notificación JSON que se parece a lo siguiente:

{ "aps" : { "alert" : "New notification!", "badge" : 2 } }

Como ve, es el servidor el responsable de configurar el número correcto en la clave de badge . Su servidor debe rastrear o calcular el número de notificaciones pendientes para cada usuario y generar el número de badge antes de enviar la notificación a Apple.

La responsabilidad del cliente es borrar el distintivo de notificación, o disminuirlo, cuando el usuario ve una notificación. El código para hacerlo es

application.applicationIconBadgeNumber = application.applicationIconBadgeNumber - 1; // Decrement counter

o

application.applicationIconBadgeNumber = 0; // Reset counter assuming the user is able to see all notifications at once.


La aplicación -(void)application:didReceiveRemoteNotification: solo se llamará cuando la aplicación se ejecute en primer plano.

Si desea que la credencial se incremente cuando su aplicación no se está ejecutando, debe establecer el número de credencial en la carga útil de notificación de inserción . Debe estar allí para realizar un seguimiento del lado del servidor del número de credencial, ya que la propiedad de badge de la carga útil de notificación de inserción se utilizará como el número de credencial. No incrementará el número de placa por ti.

Dado que el sistema maneja las notificaciones push entrantes, su aplicación no recibe información sobre las notificaciones push recibidas para su aplicación. Solo cuando la aplicación se ejecute en primer plano se llamará la aplicación -(void)application:didReceiveRemoteNotification: . No hay forma de hacer que la aplicación vuelva a enviar una notificación cuando no esté en primer plano.


Tuve el mismo problema y lo resolví creando int. variable en class.h

Me gusta esto :

una clase personalizada.H

@property int badge;

una clase personalizada.M

-(id)init{ _badge=0; self = [super init]; if (self) { } return self;}

-(void)reminderCreator:(NSDate*)onTime withText:(NSString*)text{ _badge += 1; UILocalNotification* localNotification = [[UILocalNotification alloc] init]; localNotification.fireDate = onTime; localNotification.alertBody = text; localNotification.soundName=UILocalNotificationDefaultSoundName; localNotification.applicationIconBadgeNumber=_badge; [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; }

así que si inicializa esta clase personalizada, en algún lugar (tal vez en su viewController) y luego llama al método reminderCreator varias veces para configurar algunas notificaciones locales, asignará un número incrementado a cada notificación.

+1 si esto ayudó :)


en su lugar, puede crear una variable estática y asignarla a applicationIconBadgeNumber:

static int i=1; [UIApplication sharedApplication].applicationIconBadgeNumber = i++;