2017-01-23 6 views
0

Ich versuche Firebase Cloud Messaging. Es ist großartig und alles, aber ich habe die schwierigste Zeit, es für mich arbeiten zu lassen.Firebase messaging.setBackgroundMessageHandler empfängt keine Nachrichten

Das Problem, das ich bin vor ist mit dem Service-Arbeiter, hier ist mein firebase-messaging-sw.js:

console.log('Service worker is loaded!'); 

self.addEventListener('install', function(event) { 
    console.log('Service Worker is being installed.'); 
}); 

self.addEventListener('activate', function(event) { 
    console.log('Service Worker is being activated.'); 
}); 

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

firebase.initializeApp({ 
    'messagingSenderId': ' ... ' 
}); 

var messaging = firebase.messaging(); 

messaging.setBackgroundMessageHandler(function(payload){ 
    console.log('Received background message: ', payload); 

    return self.registration.showNotification('Title', {'body': 'Body'}); 
}); 

Wenn ich eine Nachricht senden (I PHP-FCM BTW bin mit) die Nachricht wie erwartet im Browser empfangen wird, wenn die Seite wird durch onMessage(...) im Fokus, aber nie, wenn die Seite nicht im Fokus oder der Browser geschlossen ist; Der Service-Mitarbeiter empfängt die Nachricht einfach nicht!

Die Zeile "Empfangene Hintergrundmeldung: ..." wird nie angezeigt; was bedeutet, dass der Message-Handler überhaupt nicht registriert wurde!

Hier ist eine Beispielmeldung Antwort:

{ 
    "from": " ... ", 
    "collapse_key": "do_not_collapse", 
    "data": { 
    "id": "111" 
    }, 
    "priority": "high", 
    "notification": { 
    "title": "Hi there", 
    "body": "Message body", 
    "badge": "1", 
    "color": "#ffffff" 
    } 
} 

Was hier das Problem sein könnte? Es macht mich verrückt.

Antwort

1

Ich bin mir nicht sicher, ob Sie die Importe Wurzeln in der Mitte Ihres Javascript definieren können, denke ich, dass diese Anrufe an der Spitze sein müssen.

Auch der Ausweiswert und die Farbe werden vom FCM SDK nicht unterstützt. Wenn Sie das Kennzeichen setzen möchten, können Sie den Hintergrundnachrichten-Handler verwenden, um eine Benachrichtigung anzuzeigen. Verwenden Sie das normale APi und definieren Sie das Kennzeichen über diesen APi

Verwandte Themen