manejar varias UILocalnotification más de 64

explique usando el código por favor! Se podría divulgar esta pregunta. Administrar varias notifications de UILocal. ¿Aún no recibes respuesta? Concéntrese en esta pregunta y anser ¿Cómo puedo gestionar la notificación más de 64?

Tengo una database local de todo el time de UINotification como la siguiente pregunta:

Configurar múltiples UILocalNotification

Por favor conteste.

No hay manera de progtwigr más de 64 notifications locales en un momento dado. Sin embargo, puede haber forms de lograr efectivamente lo que buscas.

  1. Si tiene notifications repetitivas, no las programe manualmente. En su lugar, use repeatInterval en el object UILocalNotification . Esta propiedad toma una NSCalendarUnit que se puede usar para configurar la repetición como cada hora, día, mes, etc.
  2. Cada vez que se lanza la aplicación, UILocalNotification evaluar los objects UILocalNotification progtwigdos. Descarta cualquier que ya no sea válido y ponga en queue tantos como sea posible en el futuro.
  3. Esta es la solución less elegante, pero potencialmente la mejor para establecer una gran cantidad de recordatorios para el usuario. Sin embargo, tenga en count antes de intentar este método, en realidad no va a registrar objects UILocalNotification adicionales y, por lo tanto, su usuario no será llevado a la aplicación cuando se muestre la notificación. Entonces, con eso, puedes usar los events del calendar y recordatorios para configurar recordatorios para el usuario. Querría utilizar el marco EventKit para manejar todo el trabajo pesado. La ventaja con este método es que puede progtwigr tantos events como desee. Y podría usar el calendar como su tienda de respaldo para sus notifications. Entonces, cada vez que se lanza la aplicación, usted consulta el EKEventStore usando uno de los methods de pnetworkingicado (como - (NSArray *)eventsMatchingPnetworkingicate:(NSPnetworkingicate *)pnetworkingicate ) para encontrar los events que creó.

Tal vez hay otras forms de administrar UILocalNotification . Según Apple puedes establecer un máximo de 64 notifications. por lo que para administrar más de 64 notifications, puede implementar debajo de la lógica.

Primero, registre primero 64 notifications locales. en cada inicio de aplicación o didBecomeActive obtienen las notifications restantes o countn utilizando [[UIApplication shanetworkingApplication]scheduledLocalNotifications] . así que si su conteo <64 entonces dice que es 30. así que agregue nuevas 34 notifications y ahora su notificación total será 64. hágalo cada vez que lo haga, de modo que funcionará según su necesidad.

Quizás esto te ayude.

Intente esto, puede cambiar el intervalo seleccionando setDay , setMonth , ….:

 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:3]; NSDate *date3Days = [calendar dateByAddingComponents:components toDate:[NSDate date] options:0]; UIApplication* app = [UIApplication shanetworkingApplication]; NSArray* oldNotifications = [app scheduledLocalNotifications]; if ( oldNotifications ) { [app cancelAllLocalNotifications]; app.applicationIconBadgeNumber = 0; } UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init]; if (notifyAlarm) { notifyAlarm.fireDate = date3Days; notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; notifyAlarm.alertBody = NSLocalizedString( @"Push message", @""); notifyAlarm.soundName = @"sound.wav"; [app scheduleLocalNotification:notifyAlarm]; } 

Si desea establecer un time específico después del cual deben aparecer las UILocalNotifications , puede crear un método de la solución anterior y hacer un ciclo sobre una matriz que indique los días que desea mostrar una notificación:

 NSArray *arrayNumbers = @[@5, @7, @14, @21, @30, @60, @90, @120]; NSDictionary *dictNotifications = [[NSUserDefaults standardUserDefaults] objectForKey:kUserDefAppStarts]; for ( NSNumber *bla in arrayNumbers ){ NSString *strKey = [NSString stringWithFormat:@"%@%@", kUserDefAppStarts, bla]; NSDictionary *dict = dictNotifications[strKey]; NSString *strMessageQuestion = dict[kKeyMessage]; [self createNotificationWithNumberOfDays:[bla integerValue] andMessage:strMessageQuestion userInfo:dict]; } 

Y aquí está el método que tienes que llamar

 + (void)createNotificationWithNumberOfDays:(int)days andMessage:(NSString *)message userInfo:(NSDictionary *)dict{ NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:days]; NSDate *dateAlert = [gregorian dateByAddingComponents:components toDate:[NSDate date] options:0]; UIApplication *app = [UIApplication shanetworkingApplication]; UILocalNotification *notifyAlarm = [[UILocalNotification alloc] init]; if( notifyAlarm ){ [notifyAlarm setFireDate:dateAlert]; [notifyAlarm setTimeZone:[NSTimeZone defaultTimeZone]]; [notifyAlarm setSoundName:@"soundname"]; [notifyAlarm setAlertBody:message]; [notifyAlarm setUserInfo:dict]; [app scheduleLocalNotification:notifyAlarm]; } 

}

Desde iOS7, puede usar la actualización de la aplicación en segundo plano para progtwigr notifications locales también. En cada llamada de actualización puede verificar su database para las notifications más cercanas (futuras) y progtwigrlas de la misma forma que lo hace en su aplicación. Hemos estado usando este enfoque en una de nuestras aplicaciones y Apple parece no tener ningún problema con eso. También tenga en count que ese usuario puede desactivarlo, por lo que debería convencer a su usuario de que no agotará su batería 🙂

Puede get más información de documentos aquí: Novedades de iOS7

y aquí: aplicación: performFetchWithCompletionHandler: