Перейти к основному содержимому

Импорт профилей клиентов при подписке на 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:

  1. Если фильтр баз не указан, то в каждой базе ресурса будет только один профиль с одной подпиской на актуальный токен со статусом подписан.
  2. Если фильтр указан, то в каждой из заданных баз будет только один профиль с одной подпиской на актуальный токен со статусом подписан. В остальных базах при этом будут приостановлены все совпадающие подписки на ресурс у всех профилей.

Если флаг 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, платформа автоматически обновит его подписку и выдаст новый токен. Таким образом в базе данных не будут создаваться дубликаты профилей.