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

Управление согласием пользователя на получение веб-пуш-уведомлений

По умолчанию Pushwoosh SDK показывает нативный запрос на подписку сразу после инициализации. Однако вы можете захотеть запросить согласие пользователя в более подходящее время, например, после того как у пользователя была возможность повзаимодействовать с вашим сайтом.

Отключение автоматической подписки

Anchor link to

Чтобы SDK не показывал запрос на подписку автоматически при инициализации, установите для параметра communicationEnabled значение false в вызове init. Это даст вам контроль над тем, когда запрашивать разрешение на пуш-уведомления.

<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', {
// другие параметры инициализации...
communicationEnabled: false, // Отключите коммуникацию, чтобы предотвратить автоматические запросы на подписку
}]);
</script>

Включение подписки по согласию пользователя

Anchor link to

После отключения автоматической подписки вы можете предложить пользователю подписаться в любое время. Когда пользователь соглашается получать пуш-уведомления (например, нажав кнопку «Подписаться» в вашем пользовательском интерфейсе), вы можете включить коммуникацию, вызвав метод setCommunicationEnabled.

Pushwoosh.setCommunicationEnabled(status?: boolean): Promise<void>

Вызов Pushwoosh.setCommunicationEnabled(true) включает коммуникацию с сервисами Pushwoosh. После включения SDK покажет нативный запрос разрешения от браузера.

Вот пример того, как можно использовать этот метод:

// Предположим, у вас есть кнопка подписки с id="subscribe-button"
const subscribeButton = document.getElementById('subscribe-button');
subscribeButton.addEventListener('click', () => {
Pushwoosh.setCommunicationEnabled(true)
.then(() => {
console.log('Пользователь подписан на пуш-уведомления.');
// Теперь вы можете скрыть кнопку подписки
subscribeButton.style.display = 'none';
})
.catch((error) => {
console.error('Ошибка при подписке пользователя:', error);
});
});