Aller au contenu


Photo

Scheduling notifications


  • Please log in to reply
10 réponses à ce sujet

#1 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 12 juillet 2017 - 19:41

Bonjour à tous,

 

Svp j'ai une question des plus élémentaire.... Avec mes excuses pour le dérangement

j'essaie d'utiliser les notifications locales répétées quotidiennement à la même heure.

La notification fonctionne bien .... Même trop bien puisqu'il m'envoie plusieurs fois (de 3 à 7) pour la même notification. Je n'attends qu'une seule notification à différentes heures.

 

Des idées de ce que j'aurais oublié ?

//Notification à 20:10
            let center = UNUserNotificationCenter.current()
            
            let content = UNMutableNotificationContent()
            content.title = "L'aventure continue"
            content.body = "\(userName)Mon message 1"
            content.categoryIdentifier = "alarm"
            content.userInfo = ["customData": "fizzbuzz"]
            content.sound = UNNotificationSound.default()
            
            var dateComponents = DateComponents()
            dateComponents.hour = 20
            dateComponents.minute = 10
            //dateComponents.second = 00
            
            let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
            
            //let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
            
            let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
            center.add(request)
            
            //center.removeAllPendingNotificationRequests()
            
            /******************************************************/
            
            //Notification à 20:15
            let center2 = UNUserNotificationCenter.current()
            
            let content2 = UNMutableNotificationContent()
            content2.title = "Aller, place à la pratique"
            content2.body = "\(userName2)Mon Message 2"
            content2.categoryIdentifier = "alarm"
            content2.userInfo = ["customData": "fizzbuzz"]
            content2.sound = UNNotificationSound.default()
            
            var dateComponents2 = DateComponents()
            dateComponents2.hour = 20
            dateComponents2.minute = 15
            //dateComponents2.second = 00
            //dateComponents2.day = 1
            
            let trigger2 = UNCalendarNotificationTrigger(dateMatching: dateComponents2, repeats: true)
            
            //let trigger2 = UNTimeIntervalNotificationTrigger(timeInterval: 10, repeats: false)
            
            let request2 = UNNotificationRequest(identifier: UUID().uuidString, content: content2, trigger: trigger2)
            center2.add(request2)
            
            //center.removeAllPendingNotificationRequests()


#2 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 922 messages
  • LocationParis

Posté 12 juillet 2017 - 20:58

Je commencerais par regarder `getPendingNotificationRequests()` pour voir si ce n'est pas toi qui les a mises plusieurs fois en testant.


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#3 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 12 juillet 2017 - 21:16

Je commencerais par regarder `getPendingNotificationRequests()` pour voir si ce n'est pas toi qui les a mises plusieurs fois en testant.

 

 

getPendingNotificationRequests() Serait la fonction qui appelle le précédent code ?

Effectivement, je l'avais mis à plusieurs endroits pas autant.

J'ai réduit et j'ai parfois 2 parfois 1

 

 

 

Je ne voulais pas le lancer à l'aide d'un bouton donc j'ai mis dans mon viewDidLoad et dans une autre fonction (d'actualisation)..... Je crois que c'est ça le problème   ???  ??? 

 

Du coup qu'est-ce que tu me conseilles ? Une fonction ? À chaque fois qu'elle sera appelée, il y aura un compte + 1 ?



#4 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 922 messages
  • LocationParis

Posté 12 juillet 2017 - 21:28

Ça dépend de ce que tu veux faire exactement.

Tu pourrais utiliser UserDefaults pour garder en mémoire que tu en as déjà lancé à telle-heure, ou getPendingNotificationRequests(), itérer les notificationsRequest, regarder celle de type calendar leur dateComponents et en rajouter un si elle ne se trouve pas déjà dans la liste ?


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#5 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 12 juillet 2017 - 21:44

En faisant appel une seule fois à la fonction dans le ViewDidLoad, j'ai effectivement d'une notif.

Ce que je cherche à faire, c'est de notifier 'utilisateur une fois le matin à 10h et une fois le soir a 18h



#6 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 13 juillet 2017 - 14:43

C'est la cata looool j'ai autant de notif que de fois ou j'ai ouvert l'appli

 

Dans ton idée de stocké une valeur dans le UserDefaults, que pense tu de stocker la date (jjmmaaaa) ? si différent on remplace sinon rien ?



#7 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 14 juillet 2017 - 15:55

Je me demande s'il est vraiment nécessaire de lancer tous les jours pour que les notifications soient prises en compte ou si une seule fois suffit ?



#8 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 16 juillet 2017 - 03:09

Je crois que j'ai trouvé. Je vous fais un retour dès que j'aurais verifier le tout


  • iLandes aime ceci

#9 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 17 juillet 2017 - 10:43

center.removeAllPendingNotificationRequests()

Au début de chacune de mes fonctions avec un appel de la fonction à chaque fois que l'application est ouverte.

Ça a l'air de fonctionner correctement pour le moment.

Sur le principe de l'utilisation du UserDefaults, j'ai également créé une fonction qui ne sera appelée qu'une fois par jour et aura pour fonction de saluer l'utilisateur. Mais dans mon cas, cela fera un p trop de notification.



#10 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 441 messages
  • LocationParis

Posté 17 juillet 2017 - 10:53

Sur le principe de l'utilisation du UserDefaults, j'ai également créé une fonction qui ne sera appelée qu'une fois par jour et aura pour fonction de saluer l'utilisateur. Mais dans mon cas, cela fera un p trop de notification.

Oublie ça. Les notifications sont des intrusions. Il faut les limiter au strict minimum.


  • rollano aime ceci

Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#11 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 220 messages

Posté 17 juillet 2017 - 16:25

Oublie ça. Les notifications sont des intrusions. Il faut les limiter au strict minimum.

 

Oui, c'est bien ce que je me disais aussi. loooool

Merci d'avoir confirmé :)






1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)


    Yahoo (1)