Dato che FINALMENTE abbiamo le notifiche push su PWA per iOS
stavo esaminando il ritardo che viene applicato prima che una notifica push venga inviata, perché sembrava richiedere più tempo del previsto.
Il codice controlla se un utente è stato online di recente (meno di push_notification_time_window_mins fa) e se lo è stato, la notifica viene ritardata di 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
Ma questo significa che in pratica può richiedere fino al doppio del tempo previsto, poiché push_notification_time_window_mins viene applicato sia nel controllo online che nel ritardo.
Esempio:
push_notification_time_window_mins è impostato su 10
13:00
Lascio il sito
13:10
Succede qualcosa che attiva una notifica.
Il codice controlla se ero online meno di 10 minuti fa.
Lo ero, quindi la notifica verrà inviata alle 13:20.
12:59
Lascio il sito
13:10
Succede qualcosa che attiva una notifica.
Il codice controlla se ero online meno di 10 minuti fa.
Non lo ero, quindi la notifica verrà inviata immediatamente, alle 13:10.
Quindi una differenza di un minuto nel mio tempo online può cambiare la consegna della notifica di quasi push_notification_time_window_mins. Soprattutto se l’impostazione viene modificata in un valore più alto, ciò può fare una differenza significativa.
Mi aspetterei che il ritardo sia push_notification_time_window_mins - (now - seen_since)