2011-02-06 5 views
0

J'ai essayé d'utiliser UILocalNotification et de définir le fuseau horaire à un autre fuseau horaire que mon défaut. Le but est de faire quelque chose comme: -Utilisateur planifiera une alerte avec l'heure et le fuseau horaire -Afficher l'alerte lorsque ce fuseau horaire devient l'heure spécifiée.UILocalNotification avec le fuseau horaire non par défaut

Dans une description plus verbale, disons que je vis à LosAngeles et mon amie est à Chicago. Je veux mettre en place une alerte quand Chicago est à 7h du matin, pour les jours de la semaine.

Pour une alerte, je peux faire sans fuseau horaire, pour faire le temps absolu. Mais je veux permettre aux utilisateurs de définir des drapeaux de répétition, auquel cas je ne peux pas sembler faire - J'ai essayé de placer la propriété timezone de localnotification à chicago comme ci-dessus, cependant la notification locale ne se déclenchera pas.

Je me suis connecté le uinocalnotification au cours du processus de sérialisation, et voici une sortie:

"<UIConcreteLocalNotification: 0xfb25a50>{fire date = 2011-02-06 06:02:00 -0800, time zone = America/Chicago (CST) offset -21600, repeat interval = 16, next fire date = 2011-02-06 08:02:00 -0800}" 

Je mis firedate pour 09h02 chicago temps absolu, et le fuseau horaire à cst - et le journal ne mentionne que la date de feu en effet 06:02 mon heure locale. Cependant, rien ne se passe. De plus, la date du prochain incendie est bizarre car elle devrait être de +1 jour, pas de +2 heures.

Voici comment je l'ai configuré: Classe classUILocalNotification = NSClassFromString (@ "UILocalNotification");

if (classUILocalNotification != nil) { 
    id note = [[classUILocalNotification alloc] init]; 

    NSString *body = @"body message";  
    switch (repeatflag) { 
     case 1: [note setRepeatInterval:NSDayCalendarUnit]; break; 
     case 2: [note setRepeatInterval:NSWeekdayCalendarUnit]; break; 
     case 3: [note setRepeatInterval:NSWeekCalendarUnit]; break; 
     case 4: [note setRepeatInterval:NSMonthCalendarUnit]; break; 
     case 5: [note setRepeatInterval:NSYearCalendarUnit]; break; 
     default: break; 
    } 
    [note setFireDate:dt]; 
    [note setAlertBody:body]; 
    [note setTimeZone:timezone];     
    [note setHasAction:NO]; 
} 

Cela semble être un comportement inconnu. Quelqu'un at-il un meilleur moyen d'accomplir ce que j'essaie de faire? Merci!

+0

Publiez un peu plus de code afin que nous puissions vérifier le problème exact est !! – KingofBliss

+0

salut kongofbliss, merci pour la réponse. Il semble y avoir un problème avec UILocalNotification (UILN) lorsque vous le définissez pour tirer avec autre chose que le tz actuel. Je n'ai pas compris exactement quoi, mais quand tz tz pas courant, la date de tir semble être mélangée dans mes tests (ios4.0.2). Pour contourner cela, je devais juste planifier uilocalnotification sans jeu d'infos fuseau horaire. Ainsi, la date est interprétée comme absolue et se déclenche correctement. En passant, pour quiconque essaie de faire cela, il y a un bug avec ios4.0 lorsque vous désinstallez l'application, et réinstaller app - UILN ensemble de l'installation précédente apparaîtra dans la nouvelle application. – Landasia

Répondre

0

Il semble y avoir un bogue avec UILocalNotification lors de l'utilisation de fuseau horaire non local. Le premier événement déclenché est déclenché pour la date et l'heure et le fuseau horaire corrects. Cependant, les événements suivants se déclenchent pour la date et l'heure indiquées dans votre fuseau horaire local au lieu de celui défini dans la méthode setTimeZone. [iOS 6.1]

Questions connexes