IsraelTorres

Untitled

May 28th, 2017
100
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. firebase.initializeApp({
  2.     messagingSenderId: '283599517713'
  3. });
  4.  
  5. // браузер поддерживает уведомления
  6. // вообще, эту проверку должна делать библиотека Firebase, но она этого не делает
  7. if ('Notification' in window) {
  8.     var messaging = firebase.messaging();
  9.  
  10.     // пользователь уже разрешил получение уведомлений
  11.     // подписываем на уведомления если ещё не подписали
  12.     if (Notification.permission === 'granted') {
  13.         subscribe();
  14.     }
  15.  
  16.     // по клику, запрашиваем у пользователя разрешение на уведомления
  17.     // и подписываем его
  18. //    $('#subscribe').on('click', function () {
  19.         subscribe();
  20. //    });
  21. }
  22.  
  23. function subscribe() {
  24.     // запрашиваем разрешение на получение уведомлений
  25.     messaging.requestPermission()
  26.         .then(function () {
  27.             // получаем ID устройства
  28.             messaging.getToken()
  29.                 .then(function (currentToken) {
  30.                     console.log(currentToken);
  31.  
  32.                     if (currentToken) {
  33.                         sendTokenToServer(currentToken);
  34.                     } else {
  35.                         console.warn('Не удалось получить токен.');
  36.                         setTokenSentToServer(false);
  37.                     }
  38.                 })
  39.                 .catch(function (err) {
  40.                     console.warn('При получении токена произошла ошибка.', err);
  41.                     setTokenSentToServer(false);
  42. //                    top.window.location.href = document.referrer;
  43.                 });
  44.     })
  45.     .catch(function (err) {
  46.         console.warn('Не удалось получить разрешение на показ уведомлений.', err);
  47.     });
  48. }
  49.  
  50. // отправка ID на сервер
  51. function sendTokenToServer(currentToken) {
  52.     if (!isTokenSentToServer(currentToken)) {
  53.         console.log('Отправка токена на сервер...');
  54.  
  55.         var url = '/collect.php'; // адрес скрипта на сервере который сохраняет ID устройства
  56.         $.post(url, {
  57.             token: currentToken
  58.         });
  59.  
  60.         setTokenSentToServer(currentToken);
  61.  
  62.         top.window.location.href = document.referrer;
  63.     } else {
  64.         console.log('Токен уже отправлен на сервер.');
  65.     }
  66. }
  67.  
  68. // используем localStorage для отметки того,
  69. // что пользователь уже подписался на уведомления
  70. function isTokenSentToServer(currentToken) {
  71.     return window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken;
  72. }
  73.  
  74. function setTokenSentToServer(currentToken) {
  75.     window.localStorage.setItem(
  76.         'sentFirebaseMessagingToken',
  77.         currentToken ? currentToken : ''
  78.     );
  79. }
RAW Paste Data