import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/firebase-messaging-sw.js')
.then(registration => {
firebase.messaging().useServiceWorker(registration);
})
.catch(error => console.error(error));
});
}
}
import { AngularFireMessaging } from '@angular/fire/messaging';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class MessagingService {
private messageSource = new BehaviorSubject(null);
currentMessage = this.messageSource.asObservable();
constructor(private angularFireMessaging: AngularFireMessaging) {
this.angularFireMessaging.messages.subscribe(
(payload) => {
console.log("new message received. ", payload);
this.messageSource.next(payload);
});
}
}
import firebase from 'firebase/app';
import 'firebase/messaging';
import { AngularFireMessagingModule } from '@angular/fire/messaging';
@NgModule({
imports: [
AngularFireMessagingModule,
...
],
providers: [
...
{
provide: AngularFireMessaging,
useFactory: firebaseMessagingStub
}
...
],
})
export class AppModule { }
export function firebaseMessagingStub() {
return {
requestPermission: () => new Promise((resolve, reject) => {}),
getToken: () => new Promise((resolve, reject) => {}),
onMessage: () => new Observable()
};
}
通过这些步骤,您应该能够正确地实施FCM推送通知并使其工作。