Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- firebase.initializeApp({
- messagingSenderId: '283599517713'
- });
- // браузер поддерживает уведомления
- // вообще, эту проверку должна делать библиотека Firebase, но она этого не делает
- if ('Notification' in window) {
- var messaging = firebase.messaging();
- // пользователь уже разрешил получение уведомлений
- // подписываем на уведомления если ещё не подписали
- if (Notification.permission === 'granted') {
- subscribe();
- }
- // по клику, запрашиваем у пользователя разрешение на уведомления
- // и подписываем его
- // $('#subscribe').on('click', function () {
- subscribe();
- // });
- }
- function subscribe() {
- // запрашиваем разрешение на получение уведомлений
- messaging.requestPermission()
- .then(function () {
- // получаем ID устройства
- messaging.getToken()
- .then(function (currentToken) {
- console.log(currentToken);
- if (currentToken) {
- sendTokenToServer(currentToken);
- } else {
- console.warn('Не удалось получить токен.');
- setTokenSentToServer(false);
- }
- })
- .catch(function (err) {
- console.warn('При получении токена произошла ошибка.', err);
- setTokenSentToServer(false);
- // top.window.location.href = document.referrer;
- });
- })
- .catch(function (err) {
- console.warn('Не удалось получить разрешение на показ уведомлений.', err);
- });
- }
- // отправка ID на сервер
- function sendTokenToServer(currentToken) {
- if (!isTokenSentToServer(currentToken)) {
- console.log('Отправка токена на сервер...');
- var url = '/collect.php'; // адрес скрипта на сервере который сохраняет ID устройства
- $.post(url, {
- token: currentToken
- });
- setTokenSentToServer(currentToken);
- top.window.location.href = document.referrer;
- } else {
- console.log('Токен уже отправлен на сервер.');
- }
- }
- // используем localStorage для отметки того,
- // что пользователь уже подписался на уведомления
- function isTokenSentToServer(currentToken) {
- return window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken;
- }
- function setTokenSentToServer(currentToken) {
- window.localStorage.setItem(
- 'sentFirebaseMessagingToken',
- currentToken ? currentToken : ''
- );
- }
Add Comment
Please, Sign In to add comment