Da wir jetzt ENDLICH Push-Benachrichtigungen auf iOS PWA haben
habe ich mir die Verzögerung angesehen, die angewendet wird, bevor eine Push-Benachrichtigung gesendet wird – da es länger als erwartet zu dauern schien.
Der Code prüft, ob ein Benutzer kürzlich online war (weniger als push_notification_time_window_mins Minuten her) und wenn ja, wird die Benachrichtigung um push_notification_time_window_mins verzögert.
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
Aber das bedeutet, dass dies in der Praxis bis zu doppelt so lange dauern kann wie erwartet, da das push_notification_time_window_mins sowohl bei der Online-Prüfung als auch bei der Verzögerung angewendet wird.
Beispiel:
push_notification_time_window_mins ist auf 10 eingestellt
13:00
Ich verlasse die Seite
13:10
Etwas passiert, das eine Benachrichtigung auslöst.
Der Code prüft, ob ich weniger als 10 Minuten online war.
Ich war es, also wird die Benachrichtigung um 13:20 gesendet.
12:59
Ich verlasse die Seite
13:10
Etwas passiert, das eine Benachrichtigung auslöst.
Der Code prüft, ob ich weniger als 10 Minuten online war.
Ich war es nicht, also wird die Benachrichtigung sofort um 13:10 gesendet.
Ein Unterschied von einer Minute in meiner Online-Zeit kann also die Zustellung der Benachrichtigung um fast push_notification_time_window_mins ändern. Besonders wenn die Einstellung auf einen höheren Wert geändert wird, kann dies einen erheblichen Unterschied machen.
Ich würde erwarten, dass die Verzögerung push_notification_time_window_mins - (jetzt - seen_since) beträgt.