Необычное свойство Push-уведомлений - время жизни
TTL - (Time To Live) время жизни. Это важный термин в сети Интернет. Этим термином чаще всего описывается время жизни пакета TCP. Изначально, по стандарту RFC 791, время жизни (TTL) в протоколе IPv4 должно было измеряться в секундах (отсюда и название). Каждая секунда ожидания в очереди узла (например, маршрутизатора), а также каждый переход на новый узел, через который проходит датаграмма, должен был уменьшить значение TTL на одну единицу. На практике, это не прижилось и поле TTL просто уменьшается на единицу на каждом транзитном узле (хопе), через который проходит датаграмма. Это было сделано, чтобы пакеты, которые пошли через неверные маршруты не бродили по ним вечность.
В рамках push-уведомлений TTL задает время жизни уведомления в секундах. Более того, если задать его равным 0 (в PushAll -1), то либо уведомление придет немеделенно, либо никогда. По сути, этот параметр задает сколько секунд уведомление будет ждать клиента, пока он присоединиться к пуш-серверу.
Преимущества работы c TTL в Push-уведомлениях
Наши пользователи часто жаловались, что им приходит много уведомлений, если они давно не заходили в сеть. При этом эти уведомления могут быть "просрочены" на несколько дней, а сами уведомления могут исходить например от канала стриммера. Используя TTL, мы можем для уведомлений о стримах поставить время жизни на 2-3 часа, то есть примерно 10000 секунд. Тогда те, кто зашли в сеть (включили компьютер, открыли браузер, или присоединились к wi-fi) после этого срока не получат это уведомление.Данный приём действительно экономит и время и средства. Доставляются только те уведомления, которые до сих пор актуальны. Это могут быть и выше описанные уведомления о стримах, и уведомления о акциях. Вы даже можете ставить TTL обычным новостным постам, дело в том, что новости могут терять актуальность со временем, либо скорее всего через 2-3 дня я их уже где либо слышал. Также есть история уведомлений, которая позволит увидеть все было в хронологическом порядке.
Что если пользователь пропустит что либо важное?
Пользователь всегда сможет увидеть уведомление в истории, а также, например дополнение для Google Chrome имеет раздел "пропущенные", если вы нигде не видели уведомление (ни на одном устройстве) тогда оно будет в этом разделе. Этот же раздел, позже, будет в приложении под Android и в веб-интерфейсе истории.
Как использовать TTL (время жизни) для моих уведомлений?
Вы можете задать TTL по-умолчанию в разделе настроек вашего канала, либо при ручной рассылке задать определенный TTL для отправляемого уведомления. Через API вы можете передать параметр ttl. Осторожнее с использованием TTL = -1, да, по сути это значит что оно будет доставлено либо сейчас, либо никогда, но если клиенты в данный момент потеряли соединение - для них уведомление не дойдет. Хотя, скорее всего данный вариант удобен для проведения онлайн конкурсов.