How to instantiate Firebase Cloud Messaging in Angular2 / TypeScript / AngularFire2 ?
It's described here for JavaScript: https://firebase.google.com/docs/cloud-messaging/js/client
Before any Firebase cloud messages can be sent using Node. js, an additional JSON file needs to be generated and installed on the server. This file contains a private key that allows Node. js code to communicate through the SDK to the Firebase messaging service and is generated from within the Firebase console.
Now we need to add those file in angular. Update Environment files. Add new object name firebase, put the data we got from General tab on Project Settings page. Add a additional field vapidKey which we got by clicking Generate key pair on Cloud Messaging tab.
The firebase.messaging()
function takes the Firebase app instance as an optional parameter.
To wire it up with AngularFire2
, you could let AngularFire2
perform the app initialization and create the Firebase app instance and could then inject the app instance (into a service, for example) and pass it to firebase.messaging()
like this:
import { Inject, Injectable } from "@angular/core";
import { FirebaseApp } from "angularfire2";
import * as firebase from 'firebase';
@Injectable()
export class SomeService {
private _messaging: firebase.messaging.Messaging;
constructor(@Inject(FirebaseApp) private _firebaseApp: firebase.app.App) {
this._messaging = firebase.messaging(this._firebaseApp);
this._messaging.requestPermission()
.then(() => { ... })
.catch((error) => { ... });
}
}
You'll need to setup the web app manifest that's mentioned in the article you referenced. That's something with which I am unfamiliar.
There seems to be an import that is required:
import '@firebase/messaging';
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With