Selon Documents d'Apple sur UILocationNotification.fireDate
:
Si la valeur spécifiée est nulle ou si elle correspond à une date passée, la notification est délivrée immédiatement.
Je ne constate pas ce comportement lorsque j'utilise une date dans le passé. Est-ce que c'est juste moi, ou d'autres personnes voient-elles cela également ?
Voici mon code :
NSMutableArray *notifications = [NSMutableArray array];
UILocalNotification* alarm = [[UILocalNotification alloc] init];
alarm.fireDate = [NSDate dateWithTimeIntervalSince1970:time(NULL)-5];
alarm.repeatInterval = 0;
alarm.soundName = @"alarm.caf";
alarm.alertBody = @"Test";
alarm.alertAction = @"Launch";
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init];
[userInfo setValue:[NSNumber numberWithInt:10] forKey:@"PsID"];
alarm.userInfo = userInfo;
notifications = [NSArray arrayWithObject:alarm];
UIApplication *app = [UIApplication sharedApplication];
app.scheduledLocalNotifications = notifications;
Si je change la valeur de time(NULL)-5 en time(NULL)+5, je reçois la notification 5 secondes après l'exécution de ce code. Avec la valeur -5, je ne reçois jamais la notification.
Je sais que les bonnes questions doivent avoir une réponse définitive et que cette question pourrait faire l'objet de nombreuses réponses "moi aussi" Donc, ce que je cherche, c'est quelque chose d'officiel (citation/lien) d'Apple disant que c'est un comportement attendu, ou une version différente du code ci-dessus qui fonctionne comme les docs le disent.
C'est important pour mon application car, dans certains cas, je dois avertir l'utilisateur d'une alarme, même si elle s'est produite plus tôt dans la journée. Je suppose que je pourrais modifier mon code pour vérifier l'heure actuelle et toujours donner une valeur quelques secondes plus loin -- mais je ne suis pas sûr que "combien de secondes plus loin" soit vraiment sûr, et je voudrais que cela se produise dès que possible -- je préférerais aussi ne pas avoir ce hack s'il y a une meilleure façon d'obtenir un "comportement documenté". Mon code réel est similaire au précédent, mais j'affiche plusieurs notifications, certaines peuvent être dans le passé, d'autres plus tard dans la journée, d'autres demain et au-delà (ceci est pour une application de calendrier).