[Résolu] UILocalNotification

Am_MeAm_Me Membre
septembre 2014 modifié dans API UIKit #1

Voilà  je me suis dit que ça serait cool pour mon app que l'utilisateur reçoivent des notification quand ses données soit mise à  jour.


 


Alors j'ai commencé à  lire la doc puis j'ai trouvé qu'il y avait un système de push etc ... mais ce n'était pas ce que je voulais. J'ai fouiné puis trouvé ULocalNotification. J'ai lu la doc puis j'ai constaté qu'il y avait 2 méthodes de UIApplication nous permettant d'interagir avec les UINotification scheduleLocalNotification et presentLocalNotificationNow essayant de lire ce que font chaque méthode je suis tombé sur cela : 



Discussion
Prior to scheduling any local notifications, you must call the registerUserNotificationSettings: method to let the system know what types of alerts, if any, you plan to display to the user.

Alors je suis surpris car registerUserNotificationSetting est dispo pour iOS 8+ (alors que je dev pour iOS 7+)


 


1) Je suis embêté par la méthode du dessus 


2) Si j'ai bien compris sans passé par ces 2 méthode on peut utiliser la propriété fireDate de UINotification et le système s'occupera d'afficher les notification programmé au temps voulu (c'est ce que j'ai compris de la doc)


 



 


 


The operating system is responsible for delivering local notifications at their scheduled times; the app does not have to be running for this to happen

 The fire date is interpreted according to the value specified in the timeZone property. If the specified value is nil or is a date in the past, the notification is delivered immediately.

 


Ce que je n'ai pas précisé c'est que j'aimerai qu'une requête soit lancé pour récupérer les données de l'utilisateur sur un serveur et si la requête trouve des mises à  jour : l'utilisateur est notifié


Mots clés:

Réponses

  • Vu ton type de notification, vaudrait mieux faire des notif push lancée par ton serveur vers les devices non ?


     


    Parce que sinon, pour ce que tu veux faire, c'est quoi l'intérêt d'une notif ? Exemple :


    1- ton app se lance


    2- requête sur le serveur : DONNEE A JOUR ?


    3- si oui : RAS


    4- si non : pas besoin de notification pour traiter le retour et afficher une alert "mettez à  jour vos données"


  • Je partirais également sur de l'APNS.


    Tes besoins indiquent très clairement ce système.


     


    Le seul intérêt que j'ai trouvé (enfin, que j'ai vu sur d'autres apps) pour les updates en backgrounds pour des apps "web", c'est de virer leur notifications " déjà  vues ". J'ai par exemple l'application StackOverFlow (enfin, StackExchange), et lorsque j'ai un notif sur mon iPhone que je lis finalement sur mon Mac, celle-ci disparait de mes appareils iOS.


  • CéroceCéroce Membre, Modérateur
    septembre 2014 modifié #4
    Les notifications locales sont des notifications programmées à  une date précise, par exemple pour faire un rappel ou prévenir d'un rendez-vous. Il te faut clairement des notifications Push.
  • Je suis d'accord avec eux. De plus, dans la documentation Apple, si je me souviens bien, il est même conseillé par Apple eux même d'utiliser les notifications Push lorsque le comportement de déclenchement de la notifications n'est pas exactement prévisible.


    Le seul inconvénient que je remarque sur les notifications Push. C'est que souvent les utilisateurs non pas envie de se faire spammer et préfère "refuser" la réception de ces notifications.


  • Ca sera pareil pour les notifications internes programmées, l'utilisateur doit les accepter.


  • Mais je n'ai pas de serveurs :3 j'utilise une api : du coup c'est pas possible. J'ai un autre moyen pour notifier les utilisateurs :


     


    Bon je change de question alors :/. J'ai un objet qui a une date exemple 24 septembre 2014 : on est le 22 septembre j'aimerai que ça notifie l'utilisateur dans 2 jours blabla .... j'ai la méthode pour connaitre le nombre de jours entre 2 dates.


     


    Je précise cette fois ! : je n'ai pas besoins de faire de requête HTTP tout est en local


  • Dans ce cas oui, localnotification c'est très bien, la une fonction que j'utilise : 


     


    -(void) configureAndScheduleLocalNotificationWithDate:(NSDate *)fireDate andAlertBody:(NSString *)alertBody {


        


        UILocalNotification * localNotif = [[UILocalNotification alloc] init];


        


        localNotif.fireDate = fireDate;


        localNotif.timeZone = [NSTimeZone defaultTimeZone];


        localNotif.alertBody = alertBody;


        localNotif.alertAction = NSLocalizedString(@View Details, nil);


        localNotif.soundName = UILocalNotificationDefaultSoundName;


        localNotif.applicationIconBadgeNumber = 1;


        


        [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];


     


    }


  • Ok cool merci 


     


    Du coup cette méthode tu l'appel à  chaque fois que tu quittes l'application ?


  • Non de mon coté c'est quand l'utilisateur modifie ses réglages (puisque ca change les notif à  envoyer)


  • Am_MeAm_Me Membre
    septembre 2014 modifié #11

    AH oui c'est plus simple ! S'il désactive tu appel une fonction pour supprimer les notification ?


    J'ai vu sur la doc un truc comme cancel je suppose que c'est ça


  • [[[UIApplication sharedApplication] scheduledLocalNotifications] pour les retrouver.

    Et tu as la méthode cancelLocalNotification:

    Tu as également la possibilité de toutes les annuler.


  • Juste une question à  quoi sert 



    localNotif.alertAction = NSLocalizedString(@View Details, nil);

    Cela implique que l'on peut avoir plusieurs UILocalNotification sur la même clé et quand je veux supprimer : je supprimer juste les motif d'une clé précise c'est ça ?


     


    J'ai lu la doc bien entendu mais c'est pas explicite pour moi


  • alertAction



     

     


    The title of the action button or slider.



  • Et en fait pour en supprimer une en particulier, il faut que tu ajoutes un identifiant unique à  chaque notification locale. (http://stackoverflow.com/questions/6340664/delete-a-particular-local-notification


  • Merci je continue à  me documenter et tester et je mettrai résolu en temps voulu ;)


Connectez-vous ou Inscrivez-vous pour répondre.