Skip to content

Настройка высокоскоростной доставки

В Wavesend аудитории пользователей определяются с помощью Segments.

Для стандартных push-кампаний Segment компилируется после отправки запроса /createMessage. Это означает, что возможна небольшая задержка перед отправкой сообщения, особенно если Segment имеет сложную структуру.

При высокоскоростной доставке Segments предварительно компилируются каждые 10 минут. Это позволяет поддерживать их в актуальном состоянии и готовыми к использованию, поэтому сообщения можно отправлять мгновенно, не дожидаясь компиляции Segment.

Высокоскоростная доставка особенно полезна, когда время имеет решающее значение. Например, спортивные организации, такие как УЕФА и ФИБА, могут использовать ее для отправки обновлений в реальном времени, где важна каждая секунда.

В этом руководстве объясняется, как настроить высокоскоростную доставку на примере спортивного приложения. Вы узнаете, как создавать Segments аудитории для уведомления пользователей о предстоящих матчах и событиях в прямом эфире.

Зачем нужна высокоскоростная доставка

Section titled “Зачем нужна высокоскоростная доставка”

Предварительные условия для использования высокоскоростной доставки спортивными организациями следующие:

  • Все матчи запланированы заранее, поэтому вы знаете, когда создавать соответствующие Segments и можете предварительно компилировать Segments аудитории
  • каждому матчу присваивается уникальный ID. Например, ID матча для финала Лиги чемпионов — 0123
  • каждой команде присваивается уникальный ID. Например, ID «Ювентуса» — 111, ID «Реал Мадрид» — 222 и т.д.
  • существует набор событий в прямом эфире, о которых вы хотите уведомлять пользователей (голы, составы команд, начало матча и т.д.)

Все Segments для высокоскоростной доставки должны быть созданы заранее — в идеале, до начала матча в рассматриваемом примере. Wavesend применяет условия Segment к базе пользователей приложения и предварительно компилирует Segments каждые 10 минут (этот интервал можно настроить).

Когда вы отправляете API-запрос /createMessage с содержимым Push и названием Segment, Wavesend уже имеет предварительно скомпилированный список получателей, что позволяет мгновенно отправить push-уведомление.

Сначала создайте набор Tags для применения и установите значения Tag для устройств пользователей. Создайте Tags типа СПИСОК (LIST), соответствующие событиям матча в прямом эфире, таким как kickoff, goal, red card, и т.д.

Например: MATCH-KICKOFF, MATCH-GOAL, MATCH-RED_CARD

Создайте Tags

Создайте такой же набор Tags, описывающий события матча в прямом эфире для команд. Например: TEAM-KICKOFF, TEAM-GOAL, TEAM-RED_CARD

Подписываясь на эти Tags, пользователи приложения могут выбирать, какие уведомления они хотели бы получать:

  • уведомления о конкретном матче (например, матч «Ювентус» — «Реал Мадрид»);
  • уведомления о матчах любимой команды (например, только о матчах «Ювентуса»);
  • уведомления о событиях, происходящих во время матча (например, только о голах в матче «Ювентус» — «Реал Мадрид»);
  • уведомления о конкретных событиях любимой команды (например, о голах и составах команд в матчах «Ювентуса»).

Теперь вы можете заполнить ранее указанные значения Tag с помощью API-запроса setTags и подписать пользователей на определенные категории push-уведомлений.

Например: Когда пользователь подписывается на получение обновлений о начале матча и голах в финале Лиги чемпионов, вызовите /setTags, содержащий ID матча:

{
"request": {
"application": "app_code",
"hwid": "device_hardware_id",
"tags": {
"MATCH_KICKOFF": "0123", // ID матча
"MATCH_GOAL": "0123" // ID матча
}
}
}

Пользователь будет получать уведомления о начале матча и забитых голах в финале Лиги чемпионов. Когда пользователь подписывается на получение обновлений о голах и красных карточках в матчах «Реал Мадрид», вызовите /setTags следующим образом:

{
"request": {
"application": "app_code",
"hwid": "device_hardware_id",
"tags": {
"TEAM_KICKOFF": "222", // ID команды
"TEAM_GOAL": "222" // ID команды
}
}
}

Этот пользователь будет получать уведомления о начале матча и голах всякий раз, когда играет «Реал Мадрид».

Теперь вы можете создавать 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", // необязательно. Значения оператора: 'AND', 'OR'
"application" : "AAAAA-00000"
}
}

Этот запрос скомпилирует Segment пользователей, подписанных на обновления о голах в финале Лиги чемпионов (ID матча=0123) ИЛИ пользователей, которые следят за «Ювентусом» или «Реал Мадрид» (ID команды=111,222).

Чтобы настроить высокоскоростную доставку в вашем Control Panel Wavesend, создайте новый Segment с соответствующими значениями Tag и свяжите его с приложением, в которое вы собираетесь отправлять Push. Segments, специфичные для приложения, предварительно компилируются каждые 10 минут, чтобы Segments аудитории всегда были актуальными.

Создание нового Segment

Когда происходит событие матча (забит гол, начало матча, красная карточка и т.д.), вызовите /createMessage, содержащий контент push-уведомления и название Segment:

{
"request": {
"application": "AAAAA_00000",
"auth": "auth_token",
"notifications": [
{
"content": "12’ Гол «Ювентуса»! «Ювентус» 1 – 0 «Реал Мадрид»",
"filter": "0123_GOAL",
"send_date": "now"
}
]
}
}

Как только мы получаем вызов /createMessage, у нас уже есть предварительно скомпилированный список устройств, которые соответствуют критериям Segment, и мы немедленно отправляем уведомление на шлюзы APN и FCM.

После окончания матча все соответствующие 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", // необязательно. Значения: 'AND', 'OR'
"application": "AAAAA-00000",
"expiration_date": "YYYY-MM-DD" // необязательно. Срок действия Segment (Фильтра)
}
}