Импорт профилей клиентов при подписке на Web push уведомления
Когда пользователь подпишется на Web push уведомления, в Базы данных и в Ресурс, в котором был сгенерирован Toolkit, размещенный на сайте, будет добавлен новый профиль.
Если один из профилей базы данных ранее уже открывал вашу email-рассылку с браузера, на котором сейчас подписывается на push, то подписка будет добавлена ему. Новый профиль в этом случае не создаётся.
Когда подписчик кликает на push-уведомление (переход по ссылке), платформа Altcraft собирает данные о профиле:
- страна, регион, часовой пояс, город, почтовый индекс и IP адрес, с которого произошла подписка на push;
- браузер и операционная система подписчика.
Мобильные браузеры также поддерживают Service worker и Web push уведомления.
Передача данных клиента при импорте профиля через Push канал
В момент регистрации подписки на push-уведомления в профиль нового пользователя можно записать любые данные, известные на момент подписки. Например, имя или фамилия клиента, дата рождения, информация о просмотренных страницах и другая бизнес-информация.
При этом можно проверить, нет ли среди существующих подписчиков клиента с такими же данными.
В функцию вызова окна подписки добавьте аргументы:
- match — поиск профиля подписчика. Имеет форму
{название_поля_профиля: "значение"}
- update — данные для добавления в новый или существующий профиль клиента. Имеет форму
{поле1: "значение1", поле2: 13}
Пример с поиском по email в ресурсе и добавлением имени и фамилии пользователя:
akPush.initSubscription(
{
email: 'example@email.com'
}, // Поиск профиля по email. Также будет записано в профиль, если совпадений не найдётся.
{
_fname: 'Anatoly',
_lname: 'Wasserman'
} // запись в профиль подписчика имени и фамилии
)
Если к ресурсу привязано несколько баз данных, вы можете задать идентификатор той базы, в которую необходимо импортировать профиль. Пример с поиском по email в базе данных с id=1
:
akPush.initSubscription(
{
db: 1
email: 'example@email.com'
}, // Поиск профиля по email. Также будет записано в профиль, если совпадений не найдётся.
{
_fname: 'Anatoly',
_lname: 'Wasserman'
} // запись в профиль подписчика имени и фамилии
)
Пример с поиском по email в базах данных с id=15
и id=20
:
akPush.initSubscription(
{
db: [15,20]
email: 'example@email.com'
}, // Поиск профиля по email. Также будет записано в профиль, если совпадений не найдётся.
{
_fname: 'Anatoly',
_lname: 'Wasserman'
} // запись в профил ь подписчика имени и фамилии
)
Список полей профиля приведён в этой статье.
Обновление данных профиля и приостановка подписок
akPush.updateSubscription вернет ошибку, если перед этим не был получен актуальный токен через akPush.initSubscription, или он был удален из кеша с помощью akPush.removeToken.
Пользователь, подписавшийся в браузере на пуши, может менять свое состояние. Например, авторизоваться в личном кабинете и получить другой матчинг. При этом текущую пуш подписку необходимо отключить на предыдущем профиле и включить на новом. Для этих целей необходимо использовать метод akPush.updateSubscription
:
akPush.updateSubscription(
{
db: [15,20]
email: 'example@email.com'
},
{
_fname: 'Anatoly',
_lname: 'Wasserman'
}, // запись в профиль подписчика имени и фамилии
inexclusive: false // нужно ли приостанавливать все подписки на ресурс с текущим токеном браузера у остальных профилей (по умолчанию)
)
Если флаг inexclusive
не передан или равен false
:
- Если фильтр баз не указан, то в каждой базе ресурса будет только один профиль с одной подпиской на актуальный токен со статусом подписан.
- Если фильтр указан, то в каждой из заданных баз будет только один профиль с одной подпиской на актуальный токен со статусом подписан. В остальных базах при этом будут приостановлены все совпадающие подписки на ресурс у всех профилей.
Если флаг inexclusive
равен true
, то вызов эквивалентен вызову akPush.initSubscription
, т.е. просто произойдет обновление профиля данными и смена статуса подписки на "Подписан".
События создания и обновления web push подписки
Пользователи платформы могут подписаться на события:
- subscribe — создание push подписки
- update_subscription — обновление подписки (изменение токена подписчика)
При наступлении события данные о подписке можно отправить на сторонний сервер с помощью дополнительного кода.
Чтобы подписаться на события, добавьте следующий код на страницы сайта:
AKPush.events.on('subscribe', (data) => { // подписка на событие subscribe
console.log(data);
});
AKPush.events.on('update_subscription', (data) => { // подписка на событие update_subscription
console.log(data);
});
Данный код выведет в консоль токен подписчика, а также информацию о браузере и push-провайдере:
{
browser: "Firefox"
provider: "FirefoxFirebase"
token: "<токен подписчика>"
}
При подписке токен кэшируется. Вы можете сбросить его с помощью метода:
AKPush.removeToken()
В случае устаревания токена или повторной подписки пользователя на push, платформа автоматически обновит его подписку и выдаст новый токен. Таким образом в базе данных не будут создаваться дубликаты профилей.