iOS UILocalNotification ne pas être affiché pendant l'application en arrière-plan
-
26-10-2019 - |
Question
Autorisés - Ok, a trouvé ce qu'il était, il y avait un être [[UIApplication sharedApplication] cancelAllLocalNotifications];
de errante a tiré quand je ne m'y attendais pas
Eh bien, il est votre problème.
Merci pour l'aide tout le monde, désolé d'avoir tourner être juste le syndrome du codeur muet.
Je l'ai construit ma notification locale comme ceci:
- (void)scheduleNotification {
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {
UILocalNotification *notif = [[cls alloc] init];
NSLog(@"%@", [NSDate date]);
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
notif.alertBody = NSLocalizedString(@"Hello.", nil);
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
NSLog(@"Notification scheduled at %@", notif.fireDate);
[notif release];
}
}
Comme prévu mon journal de débogage envoie les bonnes fireDate 10 secondes à l'avenir. Si je ne quitte pas mon application, je reçois un rappel de application:didReceiveLocalNotification:
réussie.
Le hoquet est ici si j'appuie sur le bouton pour programmer cette notification et appuyez sur le bouton d'accueil pour le mettre en arrière-plan. Si je fais cela, la notification jamais incendies et je jamais une vue d'alerte de l'OS.
Ai-je raté quelque chose ici évident? Je l'ai regardé et ici et la documentation d'Apple et l'impression que j'ai raté quelque chose d'évident.
Toute aide serait grandement appréciée. Merci.
La solution 3
Ok, a trouvé ce qu'il était, il y avait un errante [[UIApplication sharedApplication] cancelAllLocalNotifications]; étant envoyé à l'entrée du fond.
Autres conseils
Voir l'exemple dans les documents d'Apple: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
pourrait-il pas que la mise en timeZone à [NSTimeZone Defaulttimezone] est à l'origine du problème? GMT est supposée si timeZone est pas définie (par défaut nul).
Avez-vous essayé envelopper le code dans une tâche de fond?