Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. var firebaseConfig = {
  2. apiKey: "AIzaSyBDz5CNa-t5fy43N_K5uUlcoOnoayTxKuw",
  3. authDomain: "altviktoria-391fd.firebaseapp.com",
  4. databaseURL: "https://altviktoria-391fd.firebaseio.com",
  5. projectId: "altviktoria-391fd",
  6. storageBucket: "altviktoria-391fd.appspot.com",
  7. messagingSenderId: "806206083450",
  8. appId: "1:806206083450:web:a585eac51845a450d146c3"
  9. };
  10. // Initialize Firebase
  11. firebase.initializeApp(firebaseConfig);
  12.  
  13. if ('Notification' in window) {
  14. var messaging = firebase.messaging();
  15.  
  16. // пользователь уже разрешил получение уведомлений
  17. // подписываем на уведомления если ещё не подписали
  18. if (Notification.permission === 'granted') {
  19. subscribe();
  20. }
  21.  
  22. // по клику, запрашиваем у пользователя разрешение на уведомления
  23. // и подписываем его
  24. $('#subscribe').on('click', function () {
  25. subscribe();
  26. });
  27. }
  28.  
  29. function subscribe() {
  30. // запрашиваем разрешение на получение уведомлений
  31. messaging.requestPermission()
  32. .then(function () {
  33. // получаем ID устройства
  34. messaging.getToken()
  35. .then(function (currentToken) {
  36. console.log(currentToken);
  37.  
  38. if (currentToken) {
  39. sendTokenToServer(currentToken);
  40. } else {
  41. console.warn('Не удалось получить токен.');
  42. setTokenSentToServer(false);
  43. }
  44. })
  45. .catch(function (err) {
  46. console.warn('При получении токена произошла ошибка.', err);
  47. setTokenSentToServer(false);
  48. });
  49. })
  50. .catch(function (err) {
  51. console.warn('Не удалось получить разрешение на показ уведомлений.', err);
  52. });
  53. }
  54.  
  55. // отправка ID на сервер
  56. function sendTokenToServer(currentToken) {
  57. if (!isTokenSentToServer(currentToken)) {
  58. console.log('Отправка токена на сервер...');
  59.  
  60. const url = '/backend/token/create'; // адрес скрипта на сервере который сохраняет ID устройства
  61. $.post(url, {
  62. token: currentToken
  63. });
  64.  
  65. setTokenSentToServer(currentToken);
  66. } else {
  67. console.log('Токен уже отправлен на сервер.');
  68. }
  69. }
  70.  
  71. // используем localStorage для отметки того,
  72. // что пользователь уже подписался на уведомления
  73. function isTokenSentToServer(currentToken) {
  74. return window.localStorage.getItem('sentFirebaseMessagingToken') === currentToken;
  75. }
  76.  
  77. function setTokenSentToServer(currentToken) {
  78. window.localStorage.setItem(
  79. 'sentFirebaseMessagingToken',
  80. currentToken ? currentToken : ''
  81. );
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement