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