Обещание FCM.getToken () не выполнено - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь реализовать push-уведомления в Интернете с помощью FireBase. Он хорошо работает в настольном Chrome / Firefox, но когда дело доходит до Android, я не могу получить токен уведомления - обещание, возвращенное из messaging.getToken, никогда не разрешается и не выдает ошибку (всегда ожидающую). У меня есть работник службы, и он активен и работает. Вот мой код - что я делаю не так?

<script src="https://www.gstatic.com/firebasejs/5.4.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.4.2/firebase-messaging.js"></script>
<script>
  var config = {
    apiKey: "AIzaSyBuFGsjFDCILwYVzLHWLvoRIHSoDZIQBl8",
    authDomain: "mobilepush-fd2d5.firebaseapp.com",
    databaseURL: "https://mobilepush-fd2d5.firebaseio.com",
    projectId: "mobilepush-fd2d5",
    storageBucket: "mobilepush-fd2d5.appspot.com",
    messagingSenderId: "106871298920"
  };
  firebase.initializeApp(config);
  const messaging = firebase.messaging();
  messaging.usePublicVapidKey("BBYGyuGH2KqQSHyc55Di5IQnHc52fY6gqmExfWtg85-wabmQimja6X6ViR2jmNgPBZBuLeX0BXf9A0yLqUV5m90");
  var curStatus = messaging.getNotificationPermission_();
  if (curStatus == 'granted') {
    messaging.getToken().then(function(currentToken) {
      if (currentToken) {
        processToken(currentToken, 1);
      } else {
        reqPerm();
      }
    }).catch(function(err) {
      //error
    });
  } else if (curStatus == 'denied') {
    //denied
  } else {
    reqPerm();
  }

  function reqPerm() {
    messaging.requestPermission().then(function() {
      messaging.getToken().then(processToken);
    }).catch(function(err) {
      //error
    });
  }

  function processToken(token, hasAlready) {
    alert(token);
  }
</script>

1 Ответ

0 голосов
/ 10 сентября 2018

Обнаружил - память телефона была абсолютно заполнена, поэтому скрипт Firebase не смог добавить данные токена в локальную indexeddb браузера. Удалил некоторые файлы на устройстве и теперь оно работает.

...