Перейти к содержанию

Web Push SDK 3.0

Интеграция

Anchor link to

Пример интеграции на GitHub

Получите Pushwoosh Web Push SDK и разархивируйте его. У вас должны быть следующие файлы:

Anchor link to

Скачайте Pushwoosh Web Push SDK, если вы еще этого не сделали.

  • pushwoosh-service-worker.js

Файл service worker также можно скачать в Control Panel:

  1. Перейдите в Настройки → Настройки платформ → Веб push-уведомления.
  2. На карточке Конфигурация Web SDK нажмите Получить код. О других возможностях этой карточки см. раздел Конфигурация.
  3. Нажмите Скачать service worker.

Скачанный файл pushwoosh-service-worker.js содержит одну строку, которая загружает service worker из CDN Pushwoosh:

importScripts('https://cdn.pushwoosh.com/webpush/v3/pushwoosh-service-worker.js' + self.location.search);
Диалог с кодом интеграции Web SDK: кнопка Скачать service worker рядом с кнопкой Скопировать код

Кнопка Получить код видна только пользователям, которые могут управлять токенами доступа API, потому что тот же диалог генерирует init-сниппет с токеном Device API. Если вы ее не видите, используйте pushwoosh-service-worker.js из архива SDK выше или попросите администратора аккаунта выдать вам права на Токен доступа API.

Поместите все эти файлы в корневой каталог вашего сайта.

Anchor link to

Инициализируйте SDK:

Anchor link to
  1. Подключите SDK из нашего CDN асинхронно.
<script type="text/javascript" src="//cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js" async></script>
  1. Инициализируйте Web Push SDK и убедитесь, что инициализация поставлена в очередь до полной загрузки SDK.
<script type="text/javascript">
var Pushwoosh = Pushwoosh || [];
Pushwoosh.push(['init', {
logLevel: 'info', // возможные значения: error, info, debug
applicationCode: 'XXXXX-XXXXX', // код вашего приложения из Pushwoosh Control Panel
apiToken: 'XXXXXXX', // Device API Token
safariWebsitePushID: 'web.com.example.domain', // уникальная строка в формате reverse-domain, полученная на вашем Apple Developer Portal. Используется, только если в вашем приложении есть раздел Safari Configuration (см. раздел «Предварительные требования» выше)
defaultNotificationTitle: 'Pushwoosh', // устанавливает заголовок по умолчанию для push-уведомлений
defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png', // URL для пользовательского изображения уведомления
autoSubscribe: false, // или true. Если true, предлагает пользователю подписаться на push-уведомления при инициализации SDK
subscribeWidget: {
enable: true
},
userId: 'user_id', // опционально, установите пользовательский ID
tags: {
'Name': 'John Smith' // опционально, установите пользовательские теги
}
}]);
</script>

Веб-попапы

Anchor link to

Кампании с веб-попапами загружаются по умолчанию — запись webPopups в вашем объекте init не требуется. Добавьте ее только для отказа или изменения настроек по умолчанию:

webPopups: {
// enable: false, // опционально, полный отказ: пакет никогда не загружается
autoShow: true, // опционально, установите false, чтобы загружать попапы без автоматического отображения — см. методы WebPopups ниже
colorScheme: 'auto', // опционально, 'auto' (по умолчанию) | 'light' | 'dark'
},

Кампании с веб-попапами отображают контент, который вы настраиваете в Control Panel, например промо-акции, объявления или формы для сбора лидов, поверх страницы или, для кампаний Inline, внутри элемента страницы. В отличие от пользовательского попапа подписки (subscribePopup), который обрабатывает только подписку на веб-пуши, кампании с веб-попапами могут отображать любой настроенный вами контент. Инструкции по настройке в Control Panel см. в разделе Знакомство с веб-попапами.

Чтобы остановить веб-попапы на сайте, не меняя его сниппет, отключите их в Control Panel:

  1. Перейдите в Настройки → Настройки платформ → Веб push-уведомления и найдите карточку Веб-попапы.
  2. Нажмите Turn off.
Карточка Web popups на странице настроек платформы Web с бейджем Set in the snippet и кнопкой Turn off

Бейдж сменится с Set in the snippet на Off. Начиная со следующей загрузки страницы, в течение минуты, SDK не загружает попапы, даже если в сниппете задано webPopups.enable: true. autoShow и colorScheme по-прежнему берутся из сниппета. Чтобы решение снова принимал сниппет, нажмите Return to snippet на той же карточке.

Карточка работает независимо от значения Settings source, но нужная ей версия SDK зависит от этого источника:

  • Init-сниппет на вашем сайте: Web SDK 3.93.1 или новее. Более старый SDK игнорирует переключатель и продолжает загружать попапы так, как указано в сниппете.
  • Эта страница: Web SDK 3.93.0 или новее.

colorScheme выбирает, с какой палитрой будет отображаться попап с настроенным темным режимом:

  • 'auto' (по умолчанию): соответствует цветовой схеме на уровне ОС посетителя (prefers-color-scheme).
  • 'light' или 'dark': всегда отображает эту палитру, независимо от настроек ОС посетителя.

Попап без настроенного темного режима в редакторе всегда отображается в светлой теме — colorScheme на него не влияет.

Для программного управления см. методы WebPopups и события веб-попапов.

Кампании Inline и веб-формы
Anchor link to
  • Кампаниям Inline нужен Web SDK 3.97.0 или новее из CDN либо 3.98.0 или новее из npm-пакета web-push-notifications. Более старый SDK показывает кампанию Inline как попап поверх страницы. SDK отображает кампанию Inline внутри первого элемента, который соответствует CSS-селектору кампании. Если ни один элемент не подходит, кампания пропускается. SDK не отслеживает элементы, добавленные позже: когда элемент появится на странице, вызовите Pushwoosh.moduleRegistry.webPopups.show('CAMPAIGN_CODE'), который возвращает false, если подходящего элемента по-прежнему нет.
  • Веб-формам нужен Web SDK 3.99.0 или новее. SDK проверяет поля, отправляет значения в Pushwoosh с кодом кампании, которая показывает форму, и открывает страницу Success формы, как только Pushwoosh их принимает. Более старый SDK показывает контент формы без ее полей.
  • Веб-форму показывает только кампания. show() с кодом контента формы, а не кампании, возвращает false и выводит ошибку в консоль.

SDK не генерирует JavaScript-событие при отправке формы. Вместо этого Pushwoosh записывает отправки как события вашего проекта с кодом кампании в атрибуте form_code:

СобытиеКогда записывается
PW_PopupFormSubmitPushwoosh принял отправку.
PW_PopupFormSubmitErrorPushwoosh отклонил отправку в активную кампанию этого проекта. Запросы без кода кампании, а также с кодом отсутствующей, неактивной или чужой кампании либо кампании без веб-формы отклоняются без этого события. Атрибут reason принимает значение invalid_email, bounced, invalid_fields, no_verified_domain, tariff или server_error.
PW_PopupFormConfirmПосетитель подтвердил email по ссылке double opt-in.

Запрос подписки

Anchor link to

Чтобы предложить пользователям подписаться на push-уведомления, используйте Subscription widget — запрос и кнопку-колокольчик, которые настраиваются вместе. Он заменяет более старые кнопку подписки на push-уведомления и Custom Subscription Popup: на сайте, который их уже использует, они продолжают работать, но для новой интеграции не рекомендуются как отправная точка.

Конфигурация

Anchor link to

Чтобы завершить внедрение push-уведомлений на ваш сайт, вам необходимо настроить веб-платформы в вашей Pushwoosh Control Panel, следуя нашим пошаговым руководствам:

На этом же экране конфигурации также есть карточка Web SDK configuration. Через ее кнопку Получить код также можно скачать файл service worker.

Регистрация service worker в другой области

Anchor link to

Иногда вы не можете разместить файл service worker в корневом каталоге сайта, а только в подкаталоге.

В этом случае измените конфигурацию (шаг 4.3), добавив параметр

serviceWorkerUrl: “/push-notifications/pushwoosh-service-worker.js”

где /push-notifications/pushwoosh-service-worker.js — это путь к файлу pushwoosh-service-worker.js.

Обработчики событий

Anchor link to

В Pushwoosh Web SDK 3.0 вы можете подписываться на определенные события для их отслеживания**,** или отписываться от событий, если отслеживание больше не требуется.

Чтобы отследить загрузку Web SDK 3.0, вызовите событие onLoad следующим образом:

// Событие загрузки
Pushwoosh.push(['onLoad', (api) => {
console.log('Pushwoosh load!');
}]);

Чтобы отследить корректную инициализацию Web SDK, вызовите событие onReady:

// Событие готовности
Pushwoosh.push((api) => {
console.log('Pushwoosh ready!');
});

Чтобы подписаться или отписаться от любого из событий SDK, используйте обработчики после загрузки SDK:

Pushwoosh.push(['onLoad', (api) => {
function onEventNameHandler() {
console.log('Triggered event: event-name!');
}
// Чтобы подписаться на событие:
Pushwoosh.addEventHandler('event-name', onEventNameHandler)
// Чтобы отписаться от события:
Pushwoosh.removeEventHandler('event-name', onEventNameHandler)
}]);

События SDK

Anchor link to

Событие подписки (subscribe)

Anchor link to

Выполняется после того, как пользователь соглашается на получение push-уведомлений.

Pushwoosh.push(['onLoad', (api) => {
Pushwoosh.addEventHandler('subscribe', (payload) => {
console.log('Triggered event: subscribe');
});
}]);

Событие отписки (unsubscribe)

Anchor link to

Выполняется после отмены регистрации устройства для получения уведомлений.

Pushwoosh.push(['onLoad', (api) => {
Pushwoosh.addEventHandler('unsubscribe', (payload) => {
console.log('Triggered event: unsubscribe');
});
}]);

События виджета подписки

Anchor link to

Отслеживание отображения виджета запроса на подписку.

Pushwoosh.push(['onLoad', (api) => {
// Выполняется при отображении виджета запроса на подписку
Pushwoosh.addEventHandler('show-subscription-widget', (payload) => {
console.log('Triggered event: show-subscription-widget');
});
// Выполняется при скрытии виджета запроса на подписку
Pushwoosh.addEventHandler('hide-subscription-widget', (payload) => {
console.log('Triggered event: hide-subscription-widget');
});
}]);

События диалога запроса разрешений на уведомления

Anchor link to

Отслеживание отображения нативного диалога подписки.

Pushwoosh.push(['onLoad', function (api) {
// Выполняется при отображении диалога запроса разрешений
Pushwoosh.addEventHandler('show-notification-permission-dialog', (payload) => {
console.log('Triggered event: show-notification-permission-dialog');
});
// Выполняется при скрытии диалога запроса разрешений с одним из трех возможных статусов:
// 1. default - диалог закрыт
// 2. granted - разрешение предоставлено
// 3. denied - в разрешении отказано
Pushwoosh.addEventHandler('hide-notification-permission-dialog', (payload) => {
console.log('Triggered event: hide-notification-permission-dialog', payload.permission);
});
}]);

События разрешений

Anchor link to

Проверка статуса разрешения на push-уведомления при инициализации SDK; отслеживание обновления этого статуса при каждом его изменении.

Pushwoosh.push(['onLoad', (api) => {
// Выполняется во время инициализации SDK, если 'autoSubscribe: false' и/или если пользователь игнорирует запрос на push-уведомления.
Pushwoosh.addEventHandler('permission-default', (payload) => {
console.log('Triggered event: permission-default');
});
// Выполняется во время инициализации SDK, если уведомления заблокированы, или как только пользователь блокирует push-уведомления.
Pushwoosh.addEventHandler('permission-denied', (payload) => {
console.log('Triggered event: permission-denied');
});
// Выполняется во время инициализации SDK, если уведомления разрешены, или как только пользователь разрешает push-уведомления.
Pushwoosh.addEventHandler('permission-granted', (payload) => {
console.log('Triggered event: permission-granted');
});
}]);

Событие получения push-уведомления (receive-push)

Anchor link to

Отслеживание доставки push-уведомления на устройство.

Pushwoosh.push(['onLoad', (api) => {
// Выполняется при отображении push-уведомления.
Pushwoosh.addEventHandler('receive-push', (payload) => {
console.log('Triggered event: receive-push', payload.notification);
});
}]);

События уведомлений

Anchor link to

Отслеживание, открыто или закрыто push-уведомление пользователем.

Pushwoosh.push(['onLoad', (api) => {
// Выполняется, когда пользователь нажимает на уведомление.
Pushwoosh.addEventHandler('open-notification', (payload) => {
console.log('Triggered event: open-notification', payload.notification);
});
// Выполняется, когда пользователь закрывает push-уведомление.
Pushwoosh.addEventHandler('hide-notification', (payload) => {
console.log('Triggered event: hide-notification', payload.notification);
});
}]);

События Inbox

Anchor link to

Отслеживание уведомлений, отправленных в Inbox.

Pushwoosh.push(['onLoad', (api) => {
// Выполняется ServiceWorker после получения сообщения Inbox и сохранения его в indexedDB.
Pushwoosh.addEventHandler('receive-inbox-message', (payload) => {
console.log('Triggered event: receive-inbox-message', payload.message);
});
// Выполняется после автоматического обновления Inbox во время загрузки страницы.
Pushwoosh.addEventHandler('update-inbox-messages', (payload) => {
console.log('Triggered event: receive-inbox-message', payload.messages);
});
}]);

События пользовательского попапа подписки

Anchor link to

Для получения подробной информации об обработке событий пользовательского попапа подписки, пожалуйста, обратитесь к Руководству по событиям пользовательского попапа подписки.

События веб-попапов

Anchor link to
Pushwoosh.push(['onLoad', (api) => {
// Выполняется, когда веб-попапы загружены и конвейер автоматического отображения запущен для текущей страницы
Pushwoosh.addEventHandler('web-popups-ready', () => {
console.log('Triggered event: web-popups-ready');
});
// Выполняется, когда веб-попап отображается, автоматически или через webPopups.show()
Pushwoosh.addEventHandler('show-web-popup', (payload) => {
console.log('Triggered event: show-web-popup', payload.code, payload.trigger); // триггер: 'auto' | 'api'
});
// Выполняется, когда веб-попап скрыт
Pushwoosh.addEventHandler('hide-web-popup', (payload) => {
console.log('Triggered event: hide-web-popup', payload.code, payload.reason); // причина: 'user' | 'api' | 'preempted'
});
}]);

После инициализации Web Push SDK вы можете делать следующие вызовы к Pushwoosh API. Все методы возвращают объекты Promise.

Pushwoosh.push((api) => {
// Установить теги для пользователя
api.setTags({
'Tag Name 1': 'value1',
'Tag Name 2': 'value2'
});
// Получить теги для пользователя с сервера
api.getTags();
// Зарегистрировать User ID
api.registerUser('user123');
// Зарегистрировать email пользователя
api.registerEmail('user@example.com');
// Зарегистрировать номер SMS
api.registerSmsNumber('+15551234567');
// Зарегистрировать номер WhatsApp
api.registerWhatsappNumber('+1234567890');
// Отправить событие (Event)
api.postEvent('myEventName', {attributeName: 'attributeValue'});
//Отписаться от уведомлений
api.unregisterDevice();
// Установить язык устройства (переопределяет значение в теге "Language")
api.setLanguage('es');
// Альтернативно: мульти-регистрация пользователя с устройствами и каналами
api.multiRegisterDevice({
user_id: 'user123',
email: 'user@example.com',
sms_phone_number: '+1234567890',
tags: {
'UserType': { operation: TTagOperationSet, value: 'Premium' },
'Interests': { operation: TTagOperationAppend, values: ['sports', 'technology'] }
}
});
});

multiRegisterDevice

Anchor link to

Усовершенствованный метод регистрации, который позволяет регистрировать профиль пользователя с несколькими устройствами и каналами обмена сообщениями в одном вызове API. Этот метод особенно полезен для кросс-платформенных приложений или при реализации омниканальных стратегий обмена сообщениями.

Pushwoosh.push((api) => {
api.multiRegisterDevice({
user_id: 'user123', // Опционально: идентификатор пользователя
email: 'user@example.com', // Опционально: Email для обмена сообщениями по электронной почте
sms_phone_number: '+1234567890', // Опционально: номер телефона для SMS (формат E.164)
whatsapp_phone_number: '+1234567890', // Опционально: номер WhatsApp (формат E.164)
kakao_phone_number: '+1234567890', // Опционально: номер KakaoTalk (формат E.164)
language: 'en', // Опционально: код языка (ISO 639-1)
timezone: 'America/New_York', // Опционально: идентификатор часового пояса
city: 'New York', // Опционально: город для таргетинга
country: 'US', // Опционально: страна для таргетинга
state: 'NY', // Опционально: штат для таргетинга
tags: { // Опционально: значения тегов с операциями
'UserType': {
operation: TTagOperationSet, // Установить значение тега (0)
value: 'Premium'
},
'Interests': {
operation: TTagOperationAppend, // Добавить к значению тега (1)
values: ['sports', 'technology']
},
'LoginCount': {
operation: TTagOperationIncrement, // Увеличить значение тега (3)
value: '1'
}
},
push_devices: [ // Опционально: массив push-устройств
{
hwid: 'web-device-456',
platform: TPlatformChrome, // Платформа Chrome (11)
push_token: 'fcm-token-here',
app_version: '2.1.0',
platformData: {
public_key: 'web-push-public-key',
auth_token: 'web-push-auth-token',
browser: 'chrome'
}
}
]
})
.then((response) => {
console.log('Multi-registration successful:', response);
})
.catch((error) => {
console.error('Multi-registration failed:', error);
});
});

Типы платформ:

  • TPlatformSafari (10): Safari, подписанный через Apple Website Push ID. Сюда относятся:

    Новый подписчик Safari в macOS Ventura и более поздних версиях регистрируется как TPlatformChrome (11) через service worker, если у приложения есть эти ключи веб-пушей или оно работает на единой веб-платформе.

  • TPlatformChrome (11): Платформа Chrome

  • TPlatformFirefox (12): Платформа Firefox

Типы операций с тегами:

  • TTagOperationSet (0): Установить значение тега (заменить существующее значение)
  • TTagOperationAppend (1): Добавить к значению тега (добавить в список)
  • TTagOperationRemove (2): Удалить значение тега (удалить из списка)
  • TTagOperationIncrement (3): Увеличить значение тега (числовое приращение)

Преимущества:

  • Один вызов API: регистрируйте несколько устройств и каналов одновременно
  • Атомарная операция: все регистрации либо успешны, либо неудачны вместе
  • Ориентация на пользователя: связывает все устройства с одним профилем пользователя
  • Расширенная работа с тегами: поддерживает сложные операции с тегами
  • Кросс-платформенность: обрабатывайте несколько платформ одновременно

Пример отправки тегов в Pushwoosh:

Pushwoosh.push((api) => {
var myCustomTags = {
'Tag 1': 123,
'Tag 2': 'some string'
};
api.setTags(myCustomTags)
.then((res) => {
var skipped = res && res.skipped || [];
if (!skipped.length) {
console.log('success');
}
else {
console.warn('skipped tags:', skipped);
}
})
.catch((err) => {
console.error('setTags error:', err);
});
});

Увеличение значения тега

Anchor link to

Чтобы увеличить значение числового тега, используйте параметр operation со значением ‘increment’ следующим образом:

Pushwoosh.push((api) => {
api.setTags({
'Tag 1': {
operation: 'increment',
value: 1
}
})
});

Добавление значений тега

Anchor link to

Чтобы добавить новые значения к существующему тегу-списку, используйте параметр operation со значением ‘append’ следующим образом:

Pushwoosh.push((api) => {
api.setTags({
'Tag 3': {
operation: 'append',
value: ['Value3']
}
})
});

Удаление значения тега

Anchor link to

Чтобы удалить значение из тега-списка, используйте параметр operation со значением ‘remove’ следующим образом:

Pushwoosh.push((api) =>{
api.setTags({
'Tag 3': {
operation: 'remove',
value: ['Value2']
}
})
});

Публичные методы

Anchor link to

Pushwoosh.subscribe()

Этот метод используется для запроса разрешения пользователя на push-уведомления. Если пользователь уже подписан, выполнение метода прекратится.

Если пользователь еще не подписан на push-уведомления:

1. Запрашивается разрешение на push-уведомления.

2. Если пользователь разрешает уведомления, срабатывает событие onSubscribe.

Pushwoosh.subscribe() выполняется автоматически, если при инициализации SDK установлено autoSubscribe: true.

Вызовите этот метод, если вы решили вручную предлагать пользователю подписаться на push-уведомления, используя параметр autoSubscribe: false при инициализации:

<button onclick="Pushwoosh.subscribe()">Subscribe</button>
<script>
Pushwoosh.push(['onSubscribe', (api) => {
console.log('User successfully subscribed');
}]);
</script>

Pushwoosh.unsubscribe()

  1. Выполняется метод /unregisterDevice.
  2. Срабатывает событие onUnsubscribe.
<button onclick="Pushwoosh.unsubscribe()">Unsubscribe</button>
<script type="text/javascript">
Pushwoosh.push(['onUnsubscribe', (api) => {
console.log('User successfully unsubscribed');
}]);
</script>

Pushwoosh.isSubscribed()

Проверяет, подписан ли пользователь, и возвращает флаг true/false.

Pushwoosh.isSubscribed().then((isSubscribed) => {
console.log('isSubscribed', isSubscribed);
});

Pushwoosh.getHWID()

Возвращает Pushwoosh HWID.

Pushwoosh.getHWID().then((hwid) => {
console.log('hwid:', hwid);
});

Pushwoosh.getPushToken()

Возвращает push-токен, если он доступен.

Pushwoosh.getPushToken().then((pushToken) => {
console.log('pushToken:', pushToken);
});

Pushwoosh.getUserId()

Возвращает User ID, если он доступен.

Pushwoosh.getUserId().then((userId) => {
console.log('userId:', userId);
});

Pushwoosh.getParams()

Возвращает список следующих параметров:

Pushwoosh.getParams().then((params) => {
params = params || {};
var hwid = params.hwid;
var pushToken = params.pushToken;
var userId = params.userId;
});

Pushwoosh.isAvailableNotifications()

Проверяет, поддерживает ли браузер Pushwoosh WebSDK 3.0, возвращает ‘true’ или ‘false’.

Pushwoosh.isAvailableNotifications() // true/false

Методы InboxMessages

Anchor link to

messagesWithNoActionPerformedCount(): Promise<number>

Возвращает количество открытых сообщений.

Pushwoosh.pwinbox.messagesWithNoActionPerformedCount()
.then((count) => {
console.log(`${count} messages opened`);
});

unreadMessagesCount()

Возвращает количество непрочитанных сообщений.

Pushwoosh.pwinbox.unreadMessagesCount()
.then((count) => {
console.log(`${count} messages unread`);
});

messagesCount(): Promise<number>

Возвращает общее количество сообщений.

Pushwoosh.pwinbox.messagesCount()
.then((count) => {
console.log(`${count} messages`);
});

loadMessages(): Promise<Array>

Загружает список неудаленных сообщений.

Pushwoosh.pwinbox.loadMessages()
.then(() => {
console.log('Messages have been loaded');
});

readMessagesWithCodes(codes: Array<string>): Promise<void>

Отмечает сообщения как прочитанные по Inbox_Id.

Pushwoosh.pwinbox.readMessagesWithCodes(codes)
.then(() => {
console.log('Messages have been read');
});

performActionForMessageWithCode(code: string): Promise<void>

Выполняет действие, назначенное сообщению, и отмечает сообщение как прочитанное.

Pushwoosh.pwinbox.performActionForMessageWithCode(code)
.then(() => {
console.log('Action has been performed');
});

deleteMessagesWithCodes(codes: Array<string>): Promise<void>

Отмечает сообщения как удаленные.

Pushwoosh.pwinbox.deleteMessagesWithCodes([code])
.then(() => {
console.log('Messages have been deleted');
});

syncMessages(): Promise<void>

Синхронизирует сообщения с сервером.

Pushwoosh.pwinbox.syncMessages()
.then(() => {
console.log('Messages have been synchronized');
});

Методы WebPopups

Anchor link to

Программный API веб-попапов доступен всякий раз, когда загружается виджет, что является поведением по умолчанию (см. выше). Доступ к нему осуществляется через Pushwoosh.moduleRegistry.webPopups после срабатывания события web-popups-ready.

show(code: string): Promise<boolean>

Немедленно показывает попап, обходя все условия отображения (задержка, правила страницы, тип устройства/посетителя, ограничение частоты, тип триггера). Для кампании Popup закрывает уже видимый попап, чтобы освободить место. Кампания Inline вместо этого отображается в своем элементе страницы, оставляет видимый попап открытым и не мешает показу других попапов. Возвращает false вместо отклонения, когда попап не может быть показан. О кампаниях Inline и веб-формах см. Кампании Inline и веб-формы.

Pushwoosh.moduleRegistry.webPopups.show('popup_code')
.then((shown) => console.log('Popup shown:', shown));

hide(code?: string): boolean

Скрывает видимый попап. Если передан code, скрывает его только в том случае, если он совпадает с видимым попапом. Возвращает false, если ничего не было скрыто.

Pushwoosh.moduleRegistry.webPopups.hide();

hideAll(): boolean

Скрывает видимый попап и отменяет все, что еще ожидает отображения при текущей загрузке страницы. show() продолжает работать после этого.

Pushwoosh.moduleRegistry.webPopups.hideAll();

isVisible(code?: string): boolean

Проверяет, виден ли в данный момент попап. Без code проверяет, виден ли какой-либо попап.

Pushwoosh.moduleRegistry.webPopups.isVisible('popup_code');

getVisibleCode(): string | null

Возвращает код попапа, который в данный момент находится на экране, или null, если ни один не виден.

Pushwoosh.moduleRegistry.webPopups.getVisibleCode();

getAvailableCodes(): Array<string>

Возвращает коды всех попапов, которые сервер вернул для этого устройства.

Pushwoosh.moduleRegistry.webPopups.getAvailableCodes();

getState(): object

Возвращает снимок состояния веб-попапа: visible (код на экране или null), queued (коды, ожидающие слота для отображения), waiting (коды с установленным таймером задержки) и available (все коды, которые вернул сервер).

Pushwoosh.moduleRegistry.webPopups.getState();

Поддержка Progressive Web App

Anchor link to

Чтобы интегрировать Pushwoosh в ваше Progressive Web Application (PWA), выполните описанные ниже шаги. Для пользователей iPhone и iPad см. также Веб-пуши на iPhone и iPad.

1. Скопируйте путь к вашему файлу Service Worker:

if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js') // <- URL вашего service worker
});
}

Затем используйте параметр serviceWorkerUrl при инициализации WebSDK следующим образом:

var Pushwoosh = Pushwoosh || [];
Pushwoosh.push(['init', {
logLevel: 'error',
applicationCode: 'XXXXX-XXXXX',
safariWebsitePushID: 'web.com.example.domain',
defaultNotificationTitle: 'Pushwoosh',
defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png',
serviceWorkerUrl: '/service-worker.js', // <- URL вашего service worker
}]);

WebSDK не регистрирует новый Service Worker немедленно; Service Worker регистрируется, когда это необходимо:

  • когда устройство получает push-токен (при регистрации устройства или повторной подписке),
  • когда push-токен удаляется (при удалении устройства из базы пользователей).

Это ускоряет загрузку ваших страниц за счет сокращения количества запросов к серверу.

Браузеры не позволяют регистрировать два разных Service Worker одновременно (подробнее: https://github.com/w3c/ServiceWorker/issues/921), поэтому для корректной работы вашего PWA необходимо зарегистрировать общий Service Worker для вашей кодовой базы и кодовой базы Pushwoosh.

2. Добавьте следующую строку в ваш Service Worker (в начало или в конец, это не имеет значения):

importScripts('https://cdn.pushwoosh.com/webpush/v3/pushwoosh-service-worker.js' + self.location.search);

Таким образом, вы включаете получение и обработку push-уведомлений, отправленных через сервисы Pushwoosh, для вашего Service Worker.

Установка через Google Tag Manager

Anchor link to

Используйте следующий код в вашем Google Tag Manager для инициализации Pushwoosh SDK. Создайте пользовательский тег HTML и вставьте код ниже. Убедитесь, что вы изменили ваш Pushwoosh Application Code, Safari Website ID и URL изображения уведомления по умолчанию.
Также установите высокий приоритет срабатывания тега (например, 100) и активируйте его на всех страницах. См. скриншот ниже.

<script type="text/javascript" src="//cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js" async></script>
<script type="text/javascript">
var Pushwoosh = Pushwoosh || [];
Pushwoosh.push(['init', {
logLevel: 'error',
applicationCode: 'XXXXX-XXXXX',
safariWebsitePushID: 'web.com.example.domain',
defaultNotificationTitle: 'Pushwoosh',
defaultNotificationImage: 'https://yoursite.com/img/logo-medium.png',
autoSubscribe: true,
subscribeWidget: {
enable: false
},
userId: 'user_id'
}]);
</script>