Что у меня есть
Я работаю с Firebase и Ionic 4.
Я получил этот плагин cordova-plugin-firebase@2.0.5
Я сделалpush-messages.service.ts, который выглядит следующим образом:
initPushNotification() {
this.firebase.getToken()
.then(token => {
// Get token
})
.catch(error => console.error('Error getting token :', error));
this.firebase.onTokenRefresh()
.subscribe((token: string) => {
// Get token
});
// When app is active (foreground) and receive a notification
this.firebase.onNotificationOpen()
.subscribe(data => {
// Get new notification
});
}
displayBannerNotification(message: string, interlocutor: User) {
const options = new HttpHeaders()
.set('Content-Type', 'application/json')
.set('Authorization', `key=${environment.firebase.serverKey}`);
const body = {
'notification': {
'title': interlocutor.nickname,
'body': message,
'click_action': 'https://www.x.com/'
},
// tslint:disable-next-line:max-line-length
'to': 'TOKEN-DEVICE'
};
this.http.post( 'https://fcm.googleapis.com/fcm/send', JSON.stringify(body), { headers: options })
.subscribe(data => { console.log('Message envoyé ! ', data); });
}
initPushNotification()
вызывается из app.component.ts.
Я узнал, что мне пришлось внедрить работника сервиса.Но, по-видимому, они не доступны на устройстве (Android).Я все равно это сделал:
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js');
firebase.initializeApp({
// get this from Firebase console, Cloud messaging section
'messagingSenderId': 'ID'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(payload => {
console.log('Received background message ', payload);
// here you can override some options describing what's in the message;
// however, the actual content will come from the Webtask
const notificationTitle = "Background message title"
const notificationOptions = {
body: 'Background Message body.',
};
return self.registration.showNotification(notificationTitle, notificationOptions);
});
ЧТО ХОЧУ
Для запуска уведомления баннера из firebase для моего приложения в фоновом режиме
ЧТО Я ПОЛУЧИЛ
Когда я запускаю push-уведомление из консоли Firebase, уведомление появляется только на панели уведомлений, и баннер не скользит вверх по верхней части устройства.
Я получаю эту ошибку от устройства Android:
TypeError: Failed to register a ServiceWorker: An unknown error occurred when fetching the script