
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
cordova-plugin-fcm-with-dependecy-updated-12
Advanced tools
Google Firebase Cloud Messaging Cordova Push Plugin fork with dependecy updated
⚠️ After 3 years of developing and maintaining this plugin, due to the lack of sponsorship from the community and more promising opportunities, this project is now frozen. Anyone can clone and continue the good work. ⚠️
Extremely easy plug&play push notification plugin for Cordova applications with Google Firebase FCM.
How it works | Installation | Push Payload Configuration | Features | Example Apps | Companion Plugins | Changelog | Authorship
Send a push notification to a single device or topic.
Application is in foreground:
Application is in background or closed:
On Android, push notifications don't require any special permission and can be tested from emulators freely.
Unfortunately, Apple is not as nice to work with, requiring:
UIBackgroundModes=[remote-notification]
permission (automatically configured by this plugin);Make sure you have ‘google-services.json’ for Android and/or ‘GoogleService-Info.plist’ for iOS in your Cordova project root folder.
Preference | Default Value | Description |
---|---|---|
ANDROID_DEFAULT_NOTIFICATION_ICON | @mipmap/ic_launcher | Default notification icon. |
ANDROID_FCM_VERSION | 21.0.0 | Native Firebase Message SDK version. :warning: Replaced by BoM versioning on Gradle >= 3.4. |
ANDROID_FIREBASE_BOM_VERSION | 26.0.0 | Firebase BoM version. |
ANDROID_GOOGLE_SERVICES_VERSION | 4.3.4 | Native Google Services SDK version. |
ANDROID_GRADLE_TOOLS_VERSION | 4.1.0 | Gradle tools version. |
IOS_FIREBASE_MESSAGING_VERSION | ~> 7.4.0 | Native Firebase Message SDK version |
Default preferences:
npm install -g cordova@latest # Version 9 or higher required
npm uninstall @ionic-native/fcm # Ionic support is included and conflicts with @ionic-native's implementation.
cordova plugin add cordova-plugin-fcm-with-dependecy-updated-12
Complete:
npm install -g cordova@latest # Version 9 or higher required
npm uninstall @ionic-native/fcm # Ionic support is included and conflicts with @ionic-native's implementation.
cordova plugin add cordova-plugin-fcm-with-dependecy-updated-12 \
--variable ANDROID_DEFAULT_NOTIFICATION_ICON="@mipmap/ic_launcher" \
--variable ANDROID_FIREBASE_BOM_VERSION="26.0.0" \
--variable ANDROID_GOOGLE_SERVICES_VERSION="4.3.4" \
--variable ANDROID_GRADLE_TOOLS_VERSION="4.1.0" \
--variable IOS_FIREBASE_MESSAGING_VERSION="~> 7.4.0"
Default preferences:
npm install -g cordova@latest # Version 9 or higher required
npm uninstall @ionic-native/fcm # Ionic support is included and conflicts with @ionic-native's implementation.
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated-12
Complete:
npm install -g cordova@latest # Version 9 or higher required
npm uninstall @ionic-native/fcm # Ionic support is included and conflicts with @ionic-native's implementation.
ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated-12 \
--variable ANDROID_DEFAULT_NOTIFICATION_ICON="@mipmap/ic_launcher" \
--variable ANDROID_FIREBASE_BOM_VERSION="26.0.0" \
--variable ANDROID_GOOGLE_SERVICES_VERSION="4.3.4" \
--variable ANDROID_GRADLE_TOOLS_VERSION="4.1.0" \
--variable IOS_FIREBASE_MESSAGING_VERSION="~> 7.4.0"
Besides common FCM configuration (https://firebase.google.com/docs/cloud-messaging/ios/certs), the Push payload should contain "notification" and "data" keys and "click_action" equals to "FCM_PLUGIN_ACTIVITY" within "notification".
Structure expected:
{
...,
"notification": {
...
},
"data": {
...
},
"android": {
"notification": {
"click_action": "FCM_PLUGIN_ACTIVITY"
}
},
...,
}
Example:
{
"token": "[FCM token]",
"notification":{
"title":"Notification title",
"body":"Notification body",
"sound":"default",
},
"data":{
"param1":"value1",
"param2":"value2"
},
"android": {
"notification": {
"icon":"fcm_push_icon",
"click_action": "FCM_PLUGIN_ACTIVITY"
}
}
}
The JS functions are now as written bellow and do require Promise support. Which, for Android API 19 support, it can be fulfilled by a polyfill.
Removes existing push notifications from the notifications center.
await FCM.clearAllNotifications();
For Android, some notification properties are only defined programmatically. Channel can define the default behavior for notifications on Android 8.0+. Once a channel is created, it stays unchangeable until the user uninstalls the app.
await FCM.createNotificationChannel({
id: "urgent_alert", // required
name: "Urgent Alert", // required
description: "Very urgent message alert",
importance: "high", // https://developer.android.com/guide/topics/ui/notifiers/notifications#importance
visibility: "public", // https://developer.android.com/training/notify-user/build-notification#lockscreenNotification
sound: "alert_sound", // In the "alert_sound" example, the file should located as resources/raw/alert_sound.mp3
lights: true, // enable lights for notifications
vibration: true // enable vibration for notifications
});
Deletes the InstanceId, revoking all tokens.
await FCM.deleteInstanceId();
Gets iOS device's current APNS token.
const apnsToken: string = await FCM.getAPNSToken();
Retrieves the message that, on tap, opened the app. And null
, if the app was open normally.
const pushPayload: object = await FCM.getInitialPushPayload()
Gets device's current registration id.
const fcmToken: string = await FCM.getToken()
Checking for permissions on iOS. On android, it always returns true
.
const doesIt: boolean = await FCM.hasPermission()
Callback firing when receiving new notifications. It serves as a shortcut to listen to eventTarget's "notification" event.
const disposable = FCM.onNotification((payload: object) => {
// ...
})
// ...
disposable.dispose() // To remove listener
:warning: If the subscription to notification events happens after the notification has been fired, it'll be lost. As it is expected that you'd not always be able to catch the notification payload that the opened the app, the FCM.getInitialPushPayload()
method was introduced.
Callback firing when receiving a new Firebase token. It serves as a shortcut to listen to eventTarget's "tokenRefresh" event.
const disposable = FCM.onTokenRefresh((fcmToken: string) => {
// ...
})
// ...
disposable.dispose() // To remove listener
Request push notification permission on iOS, alerting the user if he/she/they have not yet accepted or denied. For Android, it'll always return true.
const wasPermissionGiven: boolean = await FCM.requestPushPermission({
ios9Support: {
timeout: 10, // How long it will wait for a decision from the user before returning `false`
interval: 0.3 // How long between each permission verification
}
})
:warning: Without this request, the Application won't receive any notification on iOS! :warning: The user will only have its permition required once, after that time, this call will only return if the permission was given that time.
Subscribes you to a topic.
const topic: string
// ...
await FCM.subscribeToTopic(topic)
Unsubscribes you from a topic.
const topic: string
// ...
await FCM.unsubscribeFromTopic(topic)
EventTarget object for native-sourced custom events. Useful for more advanced listening handling.
const listener = (data) => {
const payload = data.detail
// ...
}
FCM.eventTarget.addEventListener("notification", listener, false);
// ...
FCM.eventTarget.removeEventListener("notification", listener, false);
Ionic support was implemented as part of this plugin to allow users to have access to newer features with the type support. It is available in 3 flavors:
import { FCM } from "cordova-plugin-fcm-with-dependecy-updated-12/ionic";
import { FCM } from "cordova-plugin-fcm-with-dependecy-updated-12/ionic/ngx";
import { FCM } from "cordova-plugin-fcm-with-dependecy-updated-12/ionic/v4";
It brings the same behavior as the native implementation, except for FCM.onNotification()
and FCM.onTokenRefresh()
, which gain rxjs' Observable support.
To avoid confusion, it's suggested to also remove the redundant @ionic-native/fcm package.
Event firing when receiving new notifications.
this.fcm.onNotification().subscribe((payload: object) => {
// ...
});
Event firing when receiving a new Firebase token.
this.fcm.onTokenRefresh().subscribe((token: string) => {
// ...
});
https://github.com/JaimeHere/cordova-plugin-fcm-with-dependecy-updated-12-app-example
https://github.com/JaimeHere/cordova-plugin-fcm-with-dependecy-updated-12-ionic-v3-example
https://github.com/JaimeHere/cordova-plugin-fcm-with-dependecy-updated-12-ionic-v5-example
After a lot of work, the first release of the plugin is out. Which should enable the support, just by installing it.
Link: https://github.com/andrehtissot/cordova-plugin-fcm-image-support
When the environment supports, the cocoapods source is automatically set to the official CDN instead of the slow Github repository.
Link: https://github.com/andrehtissot/cordova-plugin-cocoapods-cdn
This started as a fork from https://github.com/fechanique/cordova-plugin-fcm and, gradually, had most of its implementation rewritten and improved, for newer dependency versions support, jitpack and cocoapods support, and new useful features.
FAQs
Google Firebase Cloud Messaging Cordova Push Plugin fork with dependecy updated
The npm package cordova-plugin-fcm-with-dependecy-updated-12 receives a total of 9 weekly downloads. As such, cordova-plugin-fcm-with-dependecy-updated-12 popularity was classified as not popular.
We found that cordova-plugin-fcm-with-dependecy-updated-12 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.