2012-02-06 14 views
6

Estoy tratando de repetir una notificación local cada 30 minutos, pero mi código no funciona bien ... Estaría agradecido si me ayuda y encuentra la solución, aquí está mi código:Tiene problemas con repeatinterval cada 30 minutos

UILocalNotification *reminderNote = [[UILocalNotification alloc]init]; 
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30]; 
reminderNote.repeatInterval = NSHourCalendarUnit; 
reminderNote.alertBody = @"some text"; 
reminderNote.alertAction = @"View"; 
reminderNote.soundName = @"sound.aif"; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 

Respuesta

13

firedate ajusta el tiempo que la notificación dispara la primera vez, y repeatInterval es el intervalo entre entre repeticiones de la notificación. Entonces el código en la pregunta programa una notificación para disparar 30 minutos (60 * 30 segundos) a partir de ahora, y luego repite cada hora.

Desafortunadamente, solo puede programar las notificaciones para que se repitan a intervalos exactos definidos por NSCalendar constants: por ejemplo, cada minuto, cada hora, cada día, cada mes, pero no en múltiplos de esos intervalos.

Afortunadamente, para recibir una notificación cada 30 minutos, puede programar dos notificaciones: una en este momento, una dentro de 30 minutos, y ambas se repiten cada hora. De la misma manera:

UILocalNotification *reminderNote = [[UILocalNotification alloc]init]; 
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30]; 
reminderNote.repeatInterval = NSHourCalendarUnit; 
reminderNote.alertBody = @"some text"; 
reminderNote.alertAction = @"View"; 
reminderNote.soundName = @"sound.aif"; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 

reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60]; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 
+0

gracias y cada 1 hora o 2 o 3 ¿Debo algo como esto? por ejemplo, cada 1 hora: 'reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60]; recordatorioNote.repeatInterval = NSHourCalendarUnit; 'y segunda fecha de activación' reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60]; ' –

+0

Por cada 1 hora, solo necesita programar una notificación. Solo toma el código en mi respuesta y deshacerte de las dos últimas filas. Si es necesario, cambie 'fireDate' para que corresponda a la primera vez que desea que se active la notificación. – yuji

+0

¿qué ocurre cada 2 horas o 3? Es correcto ? : 'reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60 * 2]; [[UIApplication sharedApplication] scheduleLocalNotification: reminderNote]; ' –

Cuestiones relacionadas