Puisque nous avons ENFIN les notifications push sur PWA iOS
J’examinais le délai appliqué avant l’envoi d’une notification push - car cela semblait prendre plus de temps que prévu.
Le code vérifie si un utilisateur était en ligne récemment (il y a moins de push_notification_time_window_mins minutes) et s’il l’était, la notification est retardée de push_notification_time_window_mins.
if user.seen_since?(SiteSetting.push_notification_time_window_mins.minutes.ago)
Jobs.enqueue_in(
SiteSetting.push_notification_time_window_mins.minutes,
...
)
else
Jobs.enqueue(:send_push_notification, user_id: user.id, payload: payload)
end
Mais cela signifie qu’en pratique, cela peut prendre jusqu’à deux fois plus de temps que prévu, car push_notification_time_window_mins est appliqué à la fois dans la vérification de présence en ligne et dans le délai.
Exemple :
push_notification_time_window_mins est défini sur 10
13:00
Je quitte le site
13:10
Quelque chose se produit qui déclenche une notification.
Le code vérifie si j’étais en ligne il y a moins de 10 minutes.
Je l’étais, donc la notification sera envoyée à 13:20.
12:59
Je quitte le site
13:10
Quelque chose se produit qui déclenche une notification.
Le code vérifie si j’étais en ligne il y a moins de 10 minutes.
Je ne l’étais pas, donc la notification sera envoyée immédiatement, à 13:10.
Ainsi, une différence d’une minute dans mon temps de connexion peut modifier la livraison de la notification de près de push_notification_time_window_mins. Surtout si le paramètre est modifié pour une valeur plus élevée, cela peut faire une différence significative.
Je m’attendrais à ce que le délai soit de push_notification_time_window_mins - (maintenant - seen_since)