que objective notification apple ios objective-c iphone apple-push-notifications

objective - push notifications ios swift 4



RecepciĆ³n de notificaciones push duplicadas ios9 (5)

Aparentemente es un problema de Apple. He enfrentado el mismo problema muchas veces en las aplicaciones. forums.developer.apple.com/thread/13414

Recibo la misma notificación de inserción dos veces en iOS9, aunque funciona bien en iOS8.

He utilizado el siguiente código para registrarme con notificaciones push:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { // use registerUserNotificationSettings UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:( UIUserNotificationTypeSound | UIUserNotificationTypeAlert|UIUserNotificationTypeBadge) categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:setting]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { // use registerForRemoteNotifications [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeBadge)]; } #else // use registerForRemoteNotifications [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; #endif


Desde iOS 9, cada vez que desinstala y vuelve a instalar la aplicación, un token de dispositivo nuevo lo ha asignado. Esta podría ser la razón por la que recibe las múltiples notificaciones push.

En realidad, leí en un foro, brindan la solución de que al generar una carga útil que agregue un valor aleatorio personalizado adicional para que cada carga útil tenga un valor único. en mi caso en vb.net Estoy usando DateTime.Now.ToString ("MMddyyyyHHmmssfff") para agregar una marca de tiempo única con milisegundos. Espero que su trabajo lo haya implementado pero no haya probado hasta ahora.


Estoy usando esto y esto también funciona bien en Ios9, por favor, inténtelo. Agregue esto en su didFinishLaunchingWithOptions :

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; }

El método para llamar es

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]]; self.AppDeviceToken=[token stringByReplacingOccurrencesOfString:@" " withString:@""]; }


Primero revise su base de datos y asegúrese de no haber recibido el token del dispositivo dos veces, es muy posible que tenga entradas duplicadas del mismo token.

En segundo lugar, si instala / desinstala la aplicación dentro de 3 a 4 días, es posible que reciba la notificación dos veces o incluso tres veces.

Solución: si es posible, desinstale la aplicación durante una semana que instale la aplicación nuevamente.

Gracias.


Tuve este problema en varias aplicaciones y parece que aparecen duplicados si llama a registerUserNotificationSettings: más de 1 vez.

Más detalles en esta respuesta: https://.com/a/35064911/4495995