Ваше приложение или плагин могут отправлять пользователям push-уведомления о разных событиях, например, о новых заказах, телефонных звонках, выполненных задачах и т. п.
Push-уведомления отправляются пользователю на том же устройстве (ПК, смартфоне или планшете), на котором он согласился их получать. Уведомления отправляются только тем пользователям, которые подтвердили своё согласие на их получение. Запрос этого согласия автоматически выполняет фреймворк Webasyst.
Для отправки уведомлений пользователь должен настроить подключение к одному из провайдеров в разделе «Настройки → Push-уведомления».
Как использовать механизм отправки push-уведомлений
1. Добавить обработчик события
Напишите в своём программном продукте обработчик события webasyst.backend_push. В коде обработчика нужно вернуть значение true
, для того чтобы включить поддержку push-уведомлений
в бекенде Webasyst-аккаунта.
При наличии такого обработчика у всех пользователей запрашивается согласие на отправку им push-уведомлений.
Если вы хотите запрашивать это согласие только на определённых страницах, например, только в пределах вашего приложения, то в обработчике события возвращайте значение true
только в том случае, когда пользователь находится на одной из подходящих
страниц, а в остальных случаях возвращайте false
.
Как только пользователь подтвердит своё согласие, в таблицу wa_push_subscribers в базе данных фреймворка сохранится токен, связанный с этим пользователем, — этот токен будет использоваться для отправки уведомлений.
2. Отправлять уведомления
Для отправки push-уведомлений используйте экземпляр класса waPushAdapter
, который нужно получить с помощью вызова wa()->getPush()
.
Перед отправкой проверяйте с помощью метода isEnabled()
, включена ли интеграция с каким-либо провайдером в разделе «Настройки → Push-уведомления», и возвращайте значение false
, если интеграция выключена, — в этом случае
уведомление не может быть отправлено.
Пример
// получить экземпляр класса для отправки уведомлений $push = wa()->getPush(); // проверить, включено ли подключение к провайдеру в системных настройках if (!$push->isEnabled()) { return false; } // id контактов пользователей, которым нужно отправить уведомление // их нужно получить согласно собственной логике вашего приложения или плагина $contact_ids = [1, 2, 3, 10]; // заполнить информацию об отправляемом уведомлении // каждый элемент массива является необязательным для заполнения $data = [ 'title' => '...', // заголовок 'message' => '...', // текст 'url' => 'https://...', // адрес ссылки, по которой перейдёт пользователь, нажав на уведомление 'image_url' => 'https://...', // URL иконки, которую можно показать в уведомлении ]; // выполнить отправку уведомления указанным пользователям $push->sendByContact($contact_ids, $data);