既然我们终于在 iOS PWA 上收到了推送通知
,我一直在研究发送推送通知之前的延迟——因为它似乎比预期的要长。
code 检查用户是否最近在线(在 push_notification_time_window_mins 分钟之前),如果在线,则通知将延迟 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
但这可能意味着,实际上这可能需要两倍于预期的时间,因为 push_notification_time_window_mins 在在线检查和延迟中都得到了应用。
示例:
push_notification_time_window_mins 设置为 10
13:00
我离开网站
13:10
发生了一些触发通知的事情。
代码检查我是否在不到 10 分钟前在线。
我在线,所以通知将在 13:20 发送。
12:59
我离开网站
13:10
发生了一些触发通知的事情。
代码检查我是否在不到 10 分钟前在线。
我不在,所以通知将立即发送,在 13:10。
因此,我在线时间的一分钟差异可能会导致通知传递时间几乎改变 push_notification_time_window_mins。特别是如果该设置更改为更高的值,这可能会产生重大影响。
我期望的延迟是 push_notification_time_window_mins - (now - seen_since)