Как настроить Firebase облачных сообщений - PullRequest
0 голосов
/ 23 июня 2019

Я размещаю статический сайт в gitlab и хочу включить push-уведомления в Интернете для подписанных браузеров. Я хотел бы хранить токен подписчиков в базе данных Firebase в реальном времени. У меня есть следующий код,

head.html

<script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
<script src="notification.js"></script>

manifest.json

"gcm_sender_id": "103953800507"

notification.js

  var config = {
    apiKey: "YOUR FIREBASE PROJECT API KEY",
    authDomain: "YOUR FIREBASE PROJECT AUTH DOMAIN",
    databaseURL: "YOUR FIREBASE PROJECT DATABASE URL",
    projectId: "YOUR FIREBASE PORJECT ID",
    storageBucket: "YOUR FIREBASE STORAGE BUCKET URL",
    messagingSenderId: "YOUR FIREBASE PROJECT SENDER ID"
  };
  firebase.initializeApp(config);

const messaging = firebase.messaging();

messaging.requestPermission()
    .then(function() {
        return messaging.getToken();
    })
    .then(function(token) {
        // send rest call to add to database
        $.ajax('https://example.firebaseio.com/pushtokens/'+token+'.json', {
            method: 'PUT',
            data: 'true',
            error: function(err) {
            }
        });
    })
    .catch(function(err) {
        console.log('Permission denied');
    });

Обновлены правила БД

 {
  "rules": {
    ".read": "auth != null",
    ".write": "auth != true"
  }
}

sw.js

importScripts("https://www.gstatic.com/firebasejs/3.7.4/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/3.7.4/firebase-messaging.js");

firebase.initializeApp({
    'messagingSenderId': 'YOUR FIREBASE PROJECT SENDER ID'
  });

  const messaging = firebase.messaging();

Я настроил это, но я получаю сообщение об ошибке в консоли, как,

В доступе отказано

указывает на

...
    .then(function(token) {
        // send rest call to add to database
        $.ajax('https://news-pwa-76fc9.firebaseio.com/'+token+'.json', {
            method: 'PUT',
            data: 'true',
            error: function(err) {
            }
        });
    })
    .catch(function(err) {
        **console.log('Permission denied');**
    });

Мой сайт , это . Я хочу отправить уведомление подписавшимся пользователям через облачные сообщения Firebase, но в этом разделе я могу найти только вариант ios / android. Куда я отправляю уведомление подписанным пользователям, чей токен хранится в базе данных Firebase в реальном времени? Теперь он по какой-то причине не хранит токен, поскольку я получаю сообщение об ошибке «Отказано в доступе».

...