Capacitor plugin to enable features from Firebase Cloud Messaging
This plugin is intended to be used combined with Capacitor API for Push Notifications. Capacitor only provides APN token whereas this plugin offers the possibility to work with FCM tokens and more.
method | info | platform |
---|---|---|
subscribeTo |
subscribe to fcm topic | ios/android |
unsubscribeFrom |
unsubscribe from fcm topic | ios/android |
getToken |
get fcm token to eventually use from a server | ios/android |
deleteInstance |
remove local fcm instance completely | ios/android |
import { Plugins } from "@capacitor/core";
const { PushNotifications } = Plugins;
//
// with type support
import { FCM } from "capacitor-fcm";
const fcm = new FCM();
//
// alternatively - without types
const { FCMPlugin } = Plugins;
//
// external required step
// register for push
PushNotifications.register()
.then(() => {
//
// Subscribe to a specific topic
// you can use `FCMPlugin` or just `fcm`
fcm
.subscribeTo({ topic: "test" })
.then(r => alert(`subscribed to topic`))
.catch(err => console.log(err));
})
.catch(err => alert(JSON.stringify(err)));
//
// Unsubscribe from a specific topic
fcm
.unsubscribeFrom({ topic: "test" })
.then(() => alert(`unsubscribed from topic`))
.catch(err => console.log(err));
//
// Get FCM token instead the APN one returned by Capacitor
fcm
.getToken()
.then(r => alert(`Token ${r.token}`))
.catch(err => console.log(err));
//
// Remove FCM instance
fcm
.deleteInstance()
.then(() => alert(`Token deleted`))
.catch(err => console.log(err));
Navigate to the project settings page for your app on Firebase.
Download the GoogleService-Info.plist
file. In Xcode right-click on the yellow folder named "App" and select the Add files to "App"
.
Tip: if you drag and drop your file to this location, Xcode may not be able to find it.
Download the google-services.json
file and copy it to android/app/
directory of your capacitor project.
- apple
- create an app identifier (apple site)
- add push notifications
- add signing request (https://help.apple.com/developer-account/#/devbfa00fef7)
- generate an APN key and then note down the ID displayed. also download the p8 file (https://fluffy.es/p8-push-notification/)
- create an app identifier (apple site)
- firebase
- add the downloaded p8 file to firebase settings with noted key ID and the account team ID
sudo gem install cocoapods
(once a time)ionic start my-cap-app --capacitor
cd my-cap-app
mkdir www && touch www/index.html
npx cap add ios
npm install --save capacitor-fcm
npx cap sync ios
(always do sync after a plugin install)npx cap open ios
- sign your app at xcode (general tab)
- enable remote notification capabilities
- add
GoogleService-Info.plist
to the app folder in xcode
// (optional) turn off `swizzling` in the `info.plist`
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Tip: every time you change a native code you may need to clean up the cache (Product > Clean build folder) and then run the app again.
ionic start my-cap-app --capacitor
cd my-cap-app
mkdir www && touch www/index.html
npx cap add android
npm install --save capacitor-fcm
npx cap sync android
(always do sync after a plugin install)npx cap open android
- add
google-services.json
to yourandroid/app
folder [extra step]
in android case we need to tell Capacitor to initialise the plugin:
on your
MainActivity.java
file addimport io.stewan.capacitor.fcm.FCMPlugin;
and then inside the init callbackadd(FCMPlugin.class);
Now you should be set to go. Try to run your client using ionic cap run android --livereload
.
Tip: every time you change a native code you may need to clean up the cache (Build > Clean Project | Build > Rebuild Project) and then run the app again.
https://github.com/stewwan/capacitor-fcm-demo
Cheers 🍻
Follow me @Twitter
MIT