2011-11-15 10 views
6

Estoy haciendo la aplicación que está utilizando UILocalNotification. Quiero saber cómo crear lagunas en UILocalNotification, es decir, cómo puedo programar la alarma durante 4 semanas (repetir diariamente o una vez cada dos días) y desactivarla durante 1 semana y nuevamente durante 4 semanas y desactivarla durante 1 semana y así sucesivamente. Este es solo un caso. Estas lagunas son dinámicas y se deciden en tiempo de ejecución.Crear intervalos de semanas en UILocalNotification junto con el ciclo

+0

aún esperando una respuesta ...... es una semana ahora – Neha

Respuesta

0

No podrá usar repeatInterval ya que desea un esquema de repetición especial. Yo creo que hay que programar una notificación local para cada día que desea tener uno:

  • 28 notificaciones para cada día de las primeras 4 semanas,
  • 28 notificaciones para cada día del segundo período de 4 semanas ,
  • y así sucesivamente ...

un código que puede ayudar:

/** 
    This method will schedule 28 notifications, each 24 hours exactly for 4 weeks, 
    starting from dayOne (first notification will be at dayOne, the second one 
    at dayOne + 24 hours..., so be sure to choose the hour you want by setting 
    dayOne correctly. 
*/ 
- (void)scheduleLocalNotificationsEachDayFor4WeeksStartingFrom:(NSDate *)dayOne { 

    // Schedule notifications for each day during 4 weeks starting at dayOne 
    NSMutableArray *notifications = [NSMutableArray array]; 
    for (int i = 0; i < 28; i++) { 
    [notifications addObject:notificationForDay(dayOne, i)]; 
    } 
    for (UILocalNotification *notification in notifications) { 
    [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 
    } 
} 

UILocalNotification *notificationInSomeDays(NSDate *referenceDate, NSUInteger some) { 
    UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease]; 

    // Notification timing 
    NSUInteger days = 60*60*24; // number of seconds in a day 
    notification.fireDate = [referenceDate dateByAddingTimeInterval:some * days]; 
    notification.timeZone = [NSTimeZone localTimeZone]; // use local time zone if your reference date is a local one, or choose the appropriate time zone 

    // define your notification content... 

    return notification; 
} 

puede utilizar el scheduleLocalNotificationsEachDayFor4WeeksStartingFrom: método para programar las 28 notificaciones que necesita para cada período de 4 semanas. De modo que ahora puede ejecutar esto tan a menudo como sea necesario llamándolo el primer día de cada período de 4 semanas en que desea que se inicien las notificaciones.

Cuando inicie la aplicación, debe limpiar todas las notificaciones locales actuales y reprogramarlas para que coincidan con sus requisitos. En particular, deberá ajustar si la aplicación se inicia durante un período de 4 semanas en el que se deben ejecutar las notificaciones. En este caso, deberá ajustar el método scheduleLocalNotificationsEachDayFor4WeeksStartingFrom propuesto para reducir el número de notificaciones programadas ...

0

Quiere decir que estas gaos son dinámicas ... por lo que si establece 28 notificaciones para las primeras 4 semanas y 28 notificación para el segundo período y así sucesivamente .... luego esto cruzará 64 notificaciones locales por aplicación ....... también estos vacíos son dinámicos significa que puede suponer cualquier cosa 12 semanas con/1 semana de descanso .... .entonces por su método ella tiene que fijar 84 notificaciones para un solo medicamento (límite de cruces) y seguramente hay más de un medicamento de este tipo ...

+0

Puedo ver el problema, que no fue explicado en la pregunta. No veo ninguna solución, excepto por considerar que el usuario tiene que iniciar la aplicación algunas veces para que las notificaciones apropiadas se puedan configurar dentro del límite (que no conocía). O usa notificaciones push. Por cierto, creo que debería haber escrito un comentario sobre mi respuesta, en lugar de escribir un comentario como respuesta. – rchampourlier

Cuestiones relacionadas