Настройка высокоскоростной доставки
Обзор
Anchor link toВ Pushwoosh сегменты аудитории определяются с помощью Segments.
Для стандартных push-кампаний сегмент компилируется после отправки запроса /createMessage. Это означает, что может возникнуть небольшая задержка перед отправкой сообщения, особенно если сегмент сложный.
При высокоскоростной доставке сегменты предварительно компилируются каждые 10 минут. Это поддерживает их актуальность и готовность к использованию, поэтому сообщения могут отправляться мгновенно — без ожидания компиляции сегмента.
Высокоскоростная доставка особенно полезна, когда время имеет решающее значение. Например, спортивные организации, такие как УЕФА и ФИБА, могут использовать ее для доставки обновлений в реальном времени, где важна каждая секунда.
В этом руководстве объясняется, как настроить высокоскоростную доставку на примере спортивного приложения. Вы узнаете, как создавать сегменты аудитории для уведомления пользователей о предстоящих матчах и событиях в прямом эфире.
Зачем нужна высокоскоростная доставка
Anchor link toПредпосылки для использования высокоскоростной доставки спортивными организациями следующие:
- Все матчи запланированы заранее, поэтому вы знаете, когда создавать соответствующие Segments, и можете предварительно скомпилировать сегменты аудитории.
- Каждый матч связан с уникальным ID. Например, ID матча финала Лиги чемпионов — 0123.
- Каждая команда связана с уникальным ID. Например, ID Ювентуса — 111, ID Реал Мадрида — 222 и т.д.
- Существует набор событий в прямом эфире, о которых вы хотели бы уведомить пользователей (голы, составы команд, начало матча и т.д.).
Настройка
Anchor link toВсе сегменты для высокоскоростной доставки должны быть созданы заранее — в идеале до начала матча в рассматриваемом примере. Pushwoosh применяет условия сегмента к базе пользователей приложения и предварительно компилирует сегменты каждые 10 минут (этот интервал можно настроить).
Когда вы отправляете API-запрос /createMessage с контентом push-уведомления и именем сегмента, у Pushwoosh уже есть предварительно скомпилированный список получателей, что позволяет отправить push-уведомление мгновенно.
Создание Tags
Anchor link toСначала создайте набор Tags для применения и установите значения Tag для устройств пользователей. Создайте Tags типа LIST, соответствующие событиям матча в прямом эфире, таким как kickoff (начало матча), goal (гол), red card (красная карточка) и т.д.
Например:
MATCH-KICKOFF, MATCH-GOAL, MATCH-RED_CARD

Создайте такой же набор Tags, описывающих события матча в прямом эфире для команд. Например: TEAM-KICKOFF, TEAM-GOAL, TEAM-RED_CARD
Подписавшись на эти Tags, пользователи приложения могут выбрать, какие уведомления они хотят получать:
- уведомления о конкретном матче (например, матч Ювентус - Реал Мадрид);
- уведомления о матчах любимой команды (например, только матчи Ювентуса);
- уведомления о событиях, происходящих во время матча (например, голы только в матче Ювентус - Реал Мадрид);
- уведомления о конкретных событиях от любимой команды (например, голы и составы матчей Ювентуса).
Установка Tags
Anchor link toТеперь вы можете заполнить ранее указанные значения Tag через API-запрос setTags и подписать пользователей на определенные категории push-уведомлений.
Например:
Когда пользователь подписывается на получение обновлений о начале матча и голах финала Лиги чемпионов, вызовите /setTags с указанием ID матча:
{ "request": { "application": "app_code", "hwid": "device_hardware_id", "tags": { "MATCH_KICKOFF": "0123", // match ID "MATCH_GOAL": "0123" // match ID } }}Пользователь будет получать уведомления о начале матча и забитых голах в финале Лиги чемпионов.
Когда пользователь подписывается на получение обновлений о голах и красных карточках матчей Реал Мадрида, вызовите /setTags следующим образом:
{ "request": { "application": "app_code", "hwid": "device_hardware_id", "tags": { "TEAM_KICKOFF": "222", // team ID "TEAM_GOAL": "222" // team ID } }}Этот пользователь будет получать уведомления о начале матчей и голах всякий раз, когда играет Реал Мадрид.
Создание Segments
Anchor link toТеперь вы можете создать Segments для событий матча на основе Tags и их значений (ID матчей и ID команд). Segments должны быть созданы через API-запрос /createFilter за 30 минут до начала матча.
Чтобы уведомить пользователей о голах, забитых в финале Лиги чемпионов из приведенного выше примера, вызовите /createFilter со следующими параметрами:
Имя Segment: 0123_GOAL
Условия Segment: #TEAM-GOAL(111, 222) OR #MATCH-GOAL(0123)
{ "request": { "auth": "auth_token", "name": "0123_GOAL", "conditions": [ ["TEAM-GOAL", "IN", ["111", "222"]], ["MATCH-GOAL", "IN", ["0123"]] ], "operator": "OR", // optional. Operator values: 'AND', 'OR' "application" : "AAAAA-00000" }}Этот запрос скомпилирует сегмент пользователей, подписанных на обновления голов финала Лиги чемпионов (ID матча=0123) ИЛИ пользователей, которые следят за Ювентусом или Реал Мадридом (ID команды=111, 222).
Чтобы настроить High-Speed Delivery в вашей панели управления Pushwoosh, создайте новый Segment с соответствующими значениями Tag и свяжите его с приложением, в которое вы собираетесь отправлять push-уведомления. Специфичные для приложения Segments предварительно компилируются каждые 10 минут, чтобы сегменты аудитории всегда были актуальными.

Когда происходит событие матча (забит гол, начало матча, красная карточка и т.д.), вызовите /createMessage с контентом push-уведомления и именем Segment:
{ "request": { "application": "AAAAA_00000", "auth": "auth_token", "notifications": [ { "content": "12’ Juventus goal! Juventus 1 – 0 Real Madrid", "filter": "0123_GOAL", "send_date": "now" } ] }}Как только мы получим вызов /createMessage, у нас уже будет предварительно скомпилированный список устройств, соответствующих критериям Segment, и мы немедленно отправим уведомление на шлюзы APNs и FCM.
Удаление Segments
Anchor link toПосле окончания матча все соответствующие Segments должны быть удалены, чтобы вычислительные ресурсы не тратились на дальнейшую перекомпиляцию Segments, которые больше не актуальны, особенно за счет Segments для матчей, запланированных следующими. Удаляйте Segments с помощью API-запроса /deleteFilter, например:
{ "request": { "auth": "auth_token", "name": "0123_GOAL" }}Чтобы избежать ручного удаления Segments, установите дату истечения срока действия Segment через запрос /createFilter, чтобы Segment был удален автоматически в указанную дату:
{ "request": { "auth": "auth_token", "name": "0123_GOAL", "conditions": [ ["TEAM-GOAL", "IN", ["111", "222"]], ["MATCH-GOAL", "IN", ["0123"]] ], "operator": "OR", // optional. Values: 'AND', 'OR' "application": "AAAAA-00000", "expiration_date": "YYYY-MM-DD" // optional. Segment (Filter) expiry }}