Dans l'iPhone SDK 3.0, je souhaite m'enregistrer pour recevoir une notification qui alerterait mon application à un certain moment. C'est possible? MerciEnregistrement d'une notification dans l'iPhone SDK 3.0
Répondre
En supposant que vous avez un NSDate
dans la date
variable et que vous voulez tirer la méthode dateIsHere:
à cette date, faites ceci:
NSTimer* timer = [[NSTimer alloc] initWithFireDate:date
interval:0.0f
target:self
selector:@selector(dateIsHere:)
userInfo:nil
repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timer
forMode:NSDefaultRunLoopMode];
[timer release];
Salut PeyloW, J'ai essayé votre code de la manière suivante, mais j'ai reçu une exception NSInvalidArgumentException.Pouvez-vous me dire ce que je fais ici incorrectement --- Ce code est dans une autre fonction NSDate * date = [[NSDate alloc ] init]; \t date = [date NSDate]; \t NSTimer * timer = [[NSTimer alloc] initWithFireDate: Date \t \t \t \t \t intervalle: 0.0f \t \t \t \t \t cible: self \t \t \t sélecteur \t: @selector (dateIsHere :) \t \t \t \t \t userInfo: néant \t \t \t \t \t répétitions: NO]; AddTimer: minuteur \t \t \t \t [[NSRunLoop mainRunLoop] addTimer: minuterie: NSDefaultRunLoopMode]; --- - (void) dateIsHere { \t NSLog (@ "La date est ici"); } Merci – felix
J'ai trouvé le problème. Je dois avoir le dateIsHere funtcion lik dateIsHere: (NSTimer *) timer. Je n'ai pas inclus l'argument timer. :) – felix
Vous commenceriez par définir un NSTimer à tirer à une certaine date, et le sélecteur qui se déclenche pourrait être ce que vous voulez. Pas besoin d'utiliser NSNotifications.
Mettre en place un NSTimer
qui exécute un sélecteur toutes les 30 secondes (ou quelle que soit la granularité dont vous avez besoin):
[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
Le sélecteur -timerFired:
(méthode) se déroulera toutes les trente secondes et vérifier l'heure, minute et seconde composantes , tirant une notification si des éléments correspondent à l'heure souhaitée:
- (void) timerFired:(NSNotification *)notification {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
NSInteger hour = [dateComponents hour];
NSInteger min = [dateComponents minute];
NSInteger sec = [dateComponents second];
if ((hour == kDesiredHour) && (min == kDesiredMinute) && (sec == kDesiredSecond)) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"kTimeComponentsWereMatched" object:nil userInfo:nil];
}
}
Vous vous inscrivez pour écouter cette notification dans une autre classe quelque part:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"kTimeComponentsWereMatched" object:nil];
Par conséquent, vous avez une méthode dans cette même classe qui fait quelque chose d'intéressant:
- (void) doSomething:(NSNotification *)notification {
// do something interesting here...
}
Vous pouvez fusionner ce code si elle est dans une classe. Ou préciser le target
dans le NSTimer
pour pointer vers l'instance de classe que vous souhaitez exécuter le selector
dans.
cela fonctionne-t-il même si l'application est fermée? – cone
Je suppose que vous voulez que cette minuterie à feu, même si l'application est fermée. Vous pouvez utiliser une notification pour cela, mais vous devez avoir un serveur qui a émis la notification.
En outre, l'iPhone afficherait une alerte demandant à l'utilisateur d'ouvrir l'application - mais ils pourraient choisir de ne pas le faire.
Vous recherchez « Notifications locales », qui est en cours d'exécution dans iOS depuis la version 4.0:
Cela devrait être la bonne réponse pour> = 4.0. Pour les versions antérieures, il n'y a probablement encore que NSNotifications (la mise en œuvre d'un push est trop fastidieuse pour la plupart)
- 1. iPhone sdk 3.0 issue
- 2. §non_lazy_ptr iphone sdk 3.0
- 3. iPhone SDK 3.0 Targetting 2.2.1 SDK
- 4. API d'enregistrement vidéo dans iPhone SDK 3.0
- 5. Trick gradient changé dans l'iPhone 3.0 SDK?
- 6. IBCocoaTouchPlugin sur iPhone SDK 3.0
- 7. SDK iPhone 3.0 librement disponible?
- 8. iPhone SDK 3.0 Vs. 2.2.1
- 9. Créer Unique Chaîne Iphone SDK 3.0
- 10. didSelectRowAtIndexPath ne fonctionne pas sur sdk 3.0
- 11. xml d'analyse syntaxique iPhone-sdk 3.0
- 12. iPhone SDK 3.0 désapprobation de UITableViewCell .text
- 13. Insérer un enregistrement avec Subsonic 3.0
- 14. Mise à jour iphone sdk à 3.0?
- 15. Comment utiliser l'API Shake dans iPhone SDK 3.0?
- 16. SetTitle pour les boutons dans l'iPhone SDK> 3.0
- 17. Ajouter des contrôles personnalisés à movieplayer dans l'iPhone 3.0 SDK
- 18. Création de cibles iPhone SDK 2.x avec Base SDK 3.0, lors de la liaison de bibliothèques statiques créées avec SDK 3.0
- 19. iPhone 3.0 sdk installer en question de l'appareil
- 20. iPhone 3.0 SDK, comment tester sur un appareil 2.2.1?
- 21. Comment désactiver l'auto-centre UITextField? (IPhone SDK 3.0)
- 22. SDK iPhone 3.0: appels presentModalViewController empilés ou en série?
- 23. Enregistrement d'un fichier ActionScript 3.0 + Jugglor et JSave
- 24. Quelle version du SDK iPhone 3.0 devrais-je télécharger?
- 25. iPhone SDK 3.0 - wait_fences: n'a pas reçu de réponse: 10004003
- 26. UIApplication envoie-t-il une notification "Shake-to-Edit" dans iPhone OS 3.0?
- 27. Enregistrement d'un événement/notification pour l'emplacement et la vitesse dans l'iPhone
- 28. comment faire pivoter/faire défiler le sélecteur avec un film dans scrollview dans iphone sdk 3.0?
- 29. App simule parfaitement dans le SDK 2.2.1 mais s'effondre quand je l'exécute dans Simulator 3.0
- 30. Notification dans les rails
Voulez-vous dire notification push ou NSNotification? NSNotification est facile, mais pas exactement ce dont vous avez besoin. En ce qui concerne les notifications push, je n'ai jamais vraiment compris. –