Сетевое push-уведомление Firebase в ES5 - PullRequest
0 голосов
/ 14 марта 2019

Я использую FCM Web JS SDK.

Работает нормально в синтаксисе ES6.Он использует много обещаний.Мне нужно дать поддержку ES5.Я не могу использовать обещания.

Вот мой текущий JS:

 // Initialize Firebase
    var config = {
        apiKey: 'xxx',
        authDomain: 'xxxx',
        databaseURL: 'xxxx',
        projectId: 'xxxx',
        storageBucket: 'xxxx',
        messagingSenderId: 'xxxx'
    };

    if (!firebase.apps.length) {
        firebase.initializeApp(config);
    }

    var vapidPublicKey = 'xxxx';
    var convertedVapidKey = urlBase64ToUint8Array(vapidPublicKey);
    var messaging = firebase.messaging();
    messaging.usePublicVapidKey('xxxx'); 

    // Register service worker

    if ('serviceWorker' in navigator) {

        var worker_url = serviceWorker.js + '&messagingSenderId=' + 12322;
        navigator.serviceWorker.register(worker_url).then(function (registration) {

            // Use this service worker
            messaging.useServiceWorker(registration);

            // Request permission
            messaging.requestPermission().then(function () {

                messaging.getToken().then(function (currentToken) {

                    if (currentToken) {
                        sendTokenToServer(currentToken);
                    }
                }).catch(function (err) {
                    console.error('An error occurred while retrieving token. ', err);
                });
            }).catch(function (err) {
                console.error('Unable to get permission to notify.', err);
            }); // Subscribe user

            registration.pushManager.subscribe({
                userVisibleOnly: true,
                applicationServerKey: convertedVapidKey
            }).catch(function (e) {
                console.error('Subcription error:', e);
            }); // Show notification on browser

            messaging.onMessage(function (payload) {
                displayNotification(payload);
            });
        }).catch(function (err) {
            // registration failed :(
            console.error('ServiceWorker registration failed: ', err);
        });

        /**
         * Callback fired if Instance ID token is updated.
         */
        messaging.onTokenRefresh(function () {
            messaging.getToken().then(function (refreshedToken) {
                // Indicate that the new Instance ID token has not yet been sent to the
                // app server.
                // Send Instance ID token to app server.
                sendTokenToServer(refreshedToken);
            }).catch(function (err) {
                console.log('Unable to retrieve refreshed token ', err);
            });
        });
    }

Теперь мне нужно реализовать это в синтаксисе ES5.Любая помощь приветствуется.

...