Local Notification - récurrence certains jours toutes les semaines

mushumushu Membre
05:56 modifié dans Actualités #1
Bonjour,
dans une application sur laquelle je travaille actuellement, je souhaite enregistrer une notification locale de sorte qu'elle se lance toutes les semaines à  une certaine heures et certains jours de la semaine sélectionnés par l'utilisateurs.

Les jours sélectionnés sont représentés par un NSArray de longueur 7 (indice 0->Lundi, 1->Mardi...)
Si un jours est sélectionné, la valeur à  l'indice du jour dans le tableau est 1, sinon 0.

Pour l'heure, c'est la même chaque jours enregistrés.

Mon problème est que je ne sais pas comment enregistrer une notification pour seulement les jours enregistrés dans mon tableau avec récurrence hebdomadaire...

Quelqu'un aurait une piste pour me mettre sur la voie svp ?

Réponses

  • laudemalaudema Membre
    05:56 modifié #2
    Une notification de quoi et par quoi ?
    Tu veux toi même t'envoyer une notification depuis ton programme ?
    Que l'utilisateur en reçoive une via le calendrier (si tant est qu'il soit aussi accessible sur iPhone que Mac OS X) ?
    Que le système t'en envoie une grâce à  un fichier cron (là  aussi si tant est qu'on puisse faire avec un iPhone) ?
    Autre chose ?
    Où est ta difficulté ?
    Sinon un tas de choses peuvent être programmées dans Cocoa tu as les NSTimer qui ne demandent que ça par exemple.
    Pour créer ton tableau tu as les NSDateComponents qui permettent de faire des tas de choses sur une date et, en particulier, d'ajouter un nombre de jours et/ou mois et/ou secondes et/ou semaines à  une date, rien ne serait plus facile que de boucler là  dessus
  • zoczoc Membre
    mai 2011 modifié #3
    dans 1304692045:

    Une notification de quoi et par quoi ?

    Une notification locale, la même chose que les notifications push, mais sans intervention des serveurs d'Apple.


    Sinon un tas de choses peuvent être programmées dans Cocoa tu as les NSTimer qui ne demandent que ça par exemple.

    Sur iPhone dans une application même pas lancée ou bloquée en tâche de fond, je pense pas  ;)


    Sinon, pour répondre à  la question, à  partir de la date du jour, il ne doit pas être bien compliqué, pour chaque jour "activé" dans le tableau, de trouver la prochaine date à  laquelle une notification doit être déclenchée. Et pour la récurrence, tout est dans la documentation de référence de UILocalNotification (propriété repeatInterval, il sufifit de configurer une période d'une semain, soit la constante NSWeekCalendarUnit à  priori).
  • AliGatorAliGator Membre, Modérateur
    05:56 modifié #4
    Sinon c'est vrai que ça vaudrait le coup de se poser la question si, plutôt qu'utiliser une UILocalNotification comme tu penses le faire à  la base, tu ne pourrais pas utiliser plutôt l'EventKit pour ajouter tes alarmes au calendrier ?
    Ca dépend de l'usage que tu fais de ces alarmes mais bon, ça vaut le coup de creuser.
  • mushumushu Membre
    05:56 modifié #5
    je dois gérer les notification avec l'application et non avec iCal.


    Zoc
    Sinon, pour répondre à  la question, à  partir de la date du jour, il ne doit pas être bien compliqué, pour chaque jour "activé" dans le tableau, de trouver la prochaine date à  laquelle une notification doit être déclenchée. Et pour la récurrence, tout est dans la documentation de référence de UILocalNotification (propriété repeatInterval, il sufifit de configurer une période d'une semain, soit la constante NSWeekCalendarUnit à  priori).


    Le problème est que je ne sais pas comment savoir si le jour actuel ou même un autre jour est un Lundi ou un Mardi ou ...
    J'ai bien lu les documentations de NSCalendar, NSDateComponents et NSDate mais je ne trouve pas comment faire.

    Quelqu'un sait comment faire ?
  • zoczoc Membre
    05:56 modifié #6

    Extrait du "Date and Time Programming Guide":

    <br />NSDate *today = [NSDate date];<br />NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];<br />NSDateComponents *weekdayComponents = [gregorian components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:today];<br /><br />NSInteger day = [weekdayComponents day];<br />NSInteger weekday = [weekdayComponents weekday];<br />
    
  • mushumushu Membre
    05:56 modifié #7
    Existe-t-il des méthodes pour comparer deux horaires (heures et minutes) ou faut-il le programmer soi-même ?
  • CéroceCéroce Membre, Modérateur
    05:56 modifié #8
    Regarde la doc de NSDate, y'a tout ce qu'il faut.
Connectez-vous ou Inscrivez-vous pour répondre.