2012-07-08 1 views
0

Je travaille sur une application qui définit un UILocalNotification. C'est la première fois que je l'utilise et j'aimerais avoir quelques explications pour l'utiliser efficacement et de la meilleure façon. Quel est le moyen le plus rapide de compter jusqu'à l'expiration de la notification? Je voudrais montrer à l'utilisateur un UILabel avec le temps manquant, ce UILabel mises à jour chaque seconde et quand je rouvre mon application, il doit montrer le minuteur. Je l'ai fait de cette façon: Lorsque je rouvre mon application ou le rappel de la vue qui doit afficher la minuterie, je vérifie s'il y a une UILocalNotification avec le userInfo que j'ai déjà défini puis je soustrais à son NSDate le l'heure actuelle, donc je reçois la différence, et mettre à jour le UILabel. Je sais que cela montre le temps en secondes mais si cette procédure est bonne, je la convertirai en temps.UILocalNotification affiche le compte à rebours au démarrage ou viewdidload

Existe-t-il un meilleur moyen de le faire?

Voici mon code:

UILocalNotification * countDownNotificationSetted;

NSArray *scheduledNotificationArray = [[UIApplication sharedApplication] scheduledLocalNotifications]; 

for (int i = 0; i<[scheduledNotificationArray count]; i++) 

    if ([[[[scheduledNotificationArray objectAtIndex:i] userInfo] objectForKey:@"ID"] isEqualToString:@"ParkNotification"]) { 

     countDownNotificationSetted = [scheduledNotificationArray objectAtIndex:i]; 
     break; 
    } 

NSDate *expringDate = [countDownNotificationSetted fireDate]; 

NSTimeInterval timeLeftToNotification = [expringDate timeIntervalSinceNow]; 

if(timeLeftToNotification == 0){ 

    [countDownTimer invalidate]; 
} 

datePicker.countDownDuration = timeLeftToNotification; 

_countDownLabel.text = [NSString stringWithFormat:@"%.0f", timeLeftToNotification]; 

NSLog(@"%.0f", timeLeftToNotification); 

Répondre

0

je pense que ce serait mieux si vous mettez à jour votre étiquette avec une minuterie comme vous le faites déjà, lorsque vous fermez l'application, stocker ce temps localement dans un défaut de fichiers ou de l'utilisateur et lorsque l'application lance à nouveau lecture à partir de ce fichier l'heure. Ou si vous voulez que le temps passe depuis la première ouverture de l'application, il suffit d'écrire l'heure au appDidFinishLaunching et de l'obtenir à chaque fois. Je ne vois pas l'avantage de la notification locale ici.

Espérons que cela aide. À la votre!

+0

Merci! Donc, je stocke sur un fichier une chaîne avec l'heure de la notification planifiée et puis soustrayez-y l'heure actuelle afin que j'obtienne l'heure manquante. Si je stocke la position de l'utilisateur quand il la notification, je peux le convertir dans un NSString, puis l'enregistrer sur le même fichier. Droite? – Cers

+0

C'est exact. C'est aussi plus simple à faire. Heureux d'avoir pu aider. À votre santé! – George