Quel est le problème avec mon code de notification?

Note: il y a une mise à jour ci-dessous.

J'ai demandé à la question précédente de spécifier une minute pour un intervalle de répétition horaire. Cependant, j'ai eu deux réponses me demandant d'essayer le composant de date, et je l'ai fait. C'est ici:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar] ; NSDateComponents *componentsForReferenceDate = [[NSDateComponents alloc] init]; [componentsForReferenceDate setHour:hour]; [componentsForReferenceDate setMinute:0]; [componentsForReferenceDate setSecond:0]; NSDate *fireDateOfNotification = [calendar dateFromComponents: componentsForReferenceDate]; // Create the notification UILocalNotification *notification = [[UILocalNotification alloc] init] ; notification.fireDate = fireDateOfNotification; notification.timeZone = [NSTimeZone localTimeZone] ; notification.alertBody = [NSSsortingng ssortingngWithFormat: @"You are missed!"] ; notification.alertAction = @"View"; notification.userInfo= [NSDictionary dictionaryWithObject:[NSSsortingng ssortingngWithFormat:@"Some information"] forKey:@"information"]; notification.repeatInterval= NSHourCalendarUnit ; notification.soundName = @"Appnotifisound.wav"; notification.applicationIconBadgeNumber = 1; [[UIApplication sharedApplication] scheduleLocalNotification:notification] ; 

Le code me semble correct et il devrait fonctionner comme on m'a dit qu'il devrait triggersr une notification au début de chaque heure. Cependant, ce n'est pas le cas! Le code est complet, j'ai défini les propriétés et je les synthétise, même le NSCalendar est là. Il construit et fonctionne parfaitement, cependant, il ne triggers jamais une notification pour chaque heure sur mon simulateur !? Je ne pouvais tout simplement pas get ce qui semble être faux. S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations ou copyr les autres parties du code pour m'aider à find ce qui manque. Je vous remercie.

Mise à jour: Voici comment j'ai codé l'heure si cela pourrait être le problème.

 NSCalendar *calendar1 = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar1 components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[NSDate date]]; hour = [components hour]; min =[components minute]; sec =[components second]; NSLog(@"hour is %i",hour); NSLog(@"min is %i",min); NSLog(@"sec is %i",sec); if (hour < 24) { hour=hour+1; } else { hour=0; 

Quelque chose qui m'a bloqué: vous ne verrez pas la notification lorsque l'application est au premier plan. Vous devez appuyer sur le button principal du simulateur pour mettre l'application en arrière-plan ou bien, pour voir quelque chose pendant que l'application est active, implémentez la méthode du protocole de délégué d'application: - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification dans votre application et que cette méthode affiche quelque chose.

Cela fonctionne pour moi quand je copy ce code, excepté que je ne règle pas votre son et que vous n'avez pas montré comment vous définissez 'heure' donc je l'ai durement codé. Voici la sortie.

2013-01-09 17: 57: 17.968 TestStackOverflow [3322: 11303] fireDate = 0001-01-01 06:17:32 +0000 2013-01-09 17: 57: 17.993 TestStackOverflow [3322: 11303] +++ scheduledLocalNotifications ("{date du feu = lundi 1er janvier, 1h00, 01h00 GMT-05: 17: 32, timezone = décalage Amérique-Toronto (EST) -18000, intervalle de répétition = NSHourCalendarUnit, nombre de répétition = UILocalNotificationInfiniteRepeatCount, prochaine date de triggersment = mercredi 9 janvier 2013, 18:17:32 heure normale de l'Est, information de l'user = {\ n information = \ "Quelques informations \"; \ n}} "