- (iOS & Android) feature: Add support for Firebase Installations SDK.
- Resolves #603
- (iOS) feature: Implement Firebase Functions
- Relates to PR #509.
- (iOS) BREAKING CHANGE: Major version update to Firebase iOS SDK from v6 to v7 (v7.8.1 - 12 March 2021)
- Requires
[email protected]
(previously[email protected]
) - Removes
developerModeEnabled
property fromgetInfo()
Remote Config response as this was removed in the latest Firebase SDK - Removes direct channel support for Firebase Messaging as no longer supported by Firebase iOS SDK v7.
- Resolves #561.
- Requires
- (Android) BREAKING CHANGE: Major version update to Firebase Android BOM from v25 to v26 (v26.7.0 - 11 March 2021)
- Removes
developerModeEnabled
property fromgetInfo()
Remote Config response as this was removed in the latest Firebase SDK
- Removes
- (iOS) Bugfix: Fix conflict with cordova-plugin-local-notifications to enable both remote notifications via this plugin and local notifications via that plugin to work simultaneously in the same app.
- (Android) Feature: add support for calling Firebase Functions
- Merged from PR #509.
- (iOS) Bugfix: Add base class to
FirebasePluginMessageReceiverManager
to prevent Xcode build error- Merged from PR #579.
- (Android) Bugfix: Fix GSON serialization of
NaN
values in Firestore- Merged from PR #584.
- (Android) Bugfix: Fix serialization of JSON arrays and objects in
logEvent()
for Analytics- Merged from PR #598.
- (iOS) Bugfix: Fix reading of all Remote Config keys in
getAll()
by falling back if default source is empty. - (iOS) Bugfix: Register notification delegate during didFinishLaunching to ensure notifications are ready when app starts.
- Resolves #542.
- (iOS) Bugfix: Make interaction with firestoreListeners thread-safe.
- Resolves #574.
- (iOS) Bugfix: Ensure traces array is always defined before referencing it.
- Resolves #602.
- (iOS) Bugfix: Gracefully handle sending empty error message to logError.
- Resolves #555.
- (iOS) Bugfix: Gracefully handle errors in fetching token data when returning user info.
- (Android) Bugfix: Gracefully handle errors when attempting to retrieve ID token when fetching current user info.
- Resolves #566.
- (Android) Make Firebase Performance Monitoring Gradle plugin optional (disabled by default) via
ANDROID_FIREBASE_PERFORMANCE_MONITORING
plugin variable due to increased build times/memory usage when it's included. - (Android) Add defensive code in
handleExceptionWithContext()
to prevent app crashes.- Resolves #535.
- (iOS) Fix
setConfigSettings
implementation.- Merged from PR #534.
- (iOS) Check if file contents for
pn-actions.json
exists before attempting to use it. - (Android) Add the Firebase Performance Monitoring Gradle plugin to monitor network traffic.
- Resolves #520.
- (Feature): Add setLanguageCode method for Firebase Auth
- Merged from PR #527.
- (iOS): Bump podspec versions for Firebase iOS SDK to v6.33.0.
- Resolves #530.
- (Android): Bump pinned Firebase SDK dependencies to latest release versions.
- (Types) Export interfaces in types definition.
- Resolves #529.
- (iOS) Set the Sign In with Apple capability based on the
IOS_ENABLE_APPLE_SIGNIN
plugin variable.- Resolves #511.
- (Android & iOS): Bump pinned Firebase SDK component versions to latest releases.
- Added support for
didCrashOnPreviousExecution()
andsetCrashlyticsCustomKey()
- Merged from PR #492.
- (Doc) Clarify requirements for parameters passed to
logEvent()
.- Resolves #491.
- Implement Remote Config v2 API
- Add new methods:
fetchAndActivate()
,resetRemoteConfig()
,getAll()
- BREAKING CHANGE: Change API signature and implementations for
setConfigSettings()
andsetDefaults()
on Android, and implement for iOS. - Resolves #155.
- Add new methods:
- (Android) BREAKING CHANGE: Remove dependency on
cordova-plugin-androidx
andcordova-plugin-androidx-adapter
- Add support for Firestore real-time listeners:
listenToDocumentInFirestoreCollection()
,listenToFirestoreCollection()
,removeFirestoreListener()
- (Types) Update typedef for recent API changes
- (iOS) Set Sign In with Apple entitlement automatically.
- Resolves #485.
- Add
authenticateUserWithEmailAndPassword()
- Resolves #486.
- (iOS) Remove superfluous braces from
FirebasePluginMessageReceiver.h
- Resolves #493.
- Support optional
valueType
parameter when filtering Firestore collections.- Resolves #496.
- (iOS) Add support for foreground and destructive
UNNotificationActionOptions
- Cherrypicked from PR #487
- (iOS) Fix crashes on receiving push notifications on iOS due to delegate chaining.
- Resolves #385.
- Reverts commit 4e9a0f4a1fd4ceb871af40629e1ddf146f287ca8 "co-existence with cordova-plugin-local-notification on iOS"
- Since upon testing, this plugin does not work with
cordova-plugin-local-notification
present in the same project even with this code in place. - And the conflict between the 2 plugins will need to be addressed separately under #230.
- (iOS) Add support for iOS actionable notifications
- Merged from PR #482.
- (Android): Handle task outcomes where task is not successful but exception is null.
- Resolves #473.
- (Android) Add missing Inapp Messaging component.
- Resolves #478.
- (iOS): Bump minimum required Cocoapods version to v1.9.1 due to requirement by Firestore v6.28.1
- (Android) (Bug fix) Fix all cases where task outcomes are being incorrectly handled.
- (iOS) Update remote config to use
activateWithCompletion
instead of deprecatedactivateWithCompletionHandler
for activating remote config. - (iOS) (Bug fix) Use regex to extract cocoapods from stdout when verifying cocoapods version during plugin install.
- Resolves #462.
- (Android, iOS): Support custom locations for Firebase config files
- (iOS): Bump Firebase SDK versions to v6.28.1 to resolve build freeze issue.
- Resolves #460.
- (iOS) Fix regression bug in
getToken()
introduced by 35a2a68e8db3808723c9f2fcb6aa176021f6c77a.- Resolves #456.
- (iOS) Update to use Firebase SDK v6.28.0
- Resolves #453.
- (iOS) Use precompiled pod for Firestore to reduce build times.
- (Android) Fixed regression bug related to default Crashlytics permission.
- See this comment.
- (iOS) Bump pinned Firebase SDK versions to latest 6.27.0
- See release notes
- (Android): Bump Firebase SDK versions to latest for Analytics, Cloud Messaging & Inapp Messaging.
- BREAKING CHANGE: (Android, iOS) Migrate from Fabric Crashlytics SDK to Firebase Crashlytics SDK.
** Based on this commit in PR #432.
** Resolves #335.
** Removes
isCrashlyticsCollectionCurrentlyEnabled()
as it's no longer necessary to manually init Crashlytics and a runtime method exists to enable/disable it. ** For more info see the Firebase Crashlytics SDK upgrade documentation. - (iOS) Fix exception raised if another plugin as already configured Firebase
- Merged from PR #419.
- (iOS) Handle case where LD_RUNPATH_SEARCH_PATHS is an array. Resolves #344.
- (Android, iOS): Avoid collection state getting out of sync & remove restriction to override config defaults.
- Merged from PR #423.
- (iOS) Fix escaping already escaped json.
- (Android): Fix parsing of existing
colors.xml
when it contains multiple existing<color>
to prevent overwriting the existing values.- Resolves #436.
- (Android, iOS): Return success/failure result when subscribing/unsubscribing from topics.
- Resolves #422.
- (Android) Fix retrieval of auth provider ID - see here for more info
- (iOS) Align retrieval of auth provider ID with Android.
- (Typing): correct return type of a method
- Merged from PR #390.
- (Documentation) Update guidance and requirements when opening issues
- (iOS): Fix escaping of line endings in multi-line log messages being sent from native iOS implementation to JS console.
- Resolves #401.
- (iOS): Set shouldEstablishDirectChannel via a plugin variable which defaults to false. Resolves #406.
- Bump androidx plugin version dependencies. Resolves #418.
- (iOS): Bump Firebase SDK components to v6.23.0.
- (Android) Bump Firebase SDK (and other Gradle dependencies) to latest versions.
- (Android & iOS) BREAKING CHANGE: Add support for filters to
fetchDocumentInFirestoreCollection()
- BREAKING CHANGE to function signature.
- Merged from PR #367.
- (Android & iOS) Add
reloadCurrentUser()
- (Doc)
createChannel()
suggestion for multiple sounds- Merged from PR #225.
- (iOS) Implement
getInfo()
for iOS.- Merged from PR #363.
- (Android & iOS) Add
signInUserWithCustomToken()
ANDsignInUserAnonymously()
auth methods- Merged from PR #359.
- (Android): Don't display app icon for large notification icon on Android. Resolves #343.
- (Android & iOS) Sign out of Google signing out of Firebase. Resolves #353.
- (Android & iOS) Add
documentExistsInFirestoreCollection()
and fix resolution offetchDocumentInFirestoreCollection()
.
- Re-add Firebase Inapp Messaging SDK component to master branch.
- Document
cli_build
branch. See #326.
- BREAKING CHANGE: Change method signature of
setCrashlyticsCollectionEnabled()
to(enabled, success, error)
(from()
) to allow enabling/disabling of Crashlytics at runtime and align it withsetPerformanceCollectionEnabled()
andsetAnalyticsCollectionEnabled()
- Add
isCrashlyticsCollectionEnabled()
andisCrashlyticsCollectionCurrentlyEnabled()
to respectively check if persistent Crashlytics setting is enabled and if Crashlytics is enabling during the current app session. - Add
isAnalyticsCollectionEnabled()
andisPerformanceCollectionEnabled()
to check if persistent settings are enabled. - BREAKING CHANGE: Remove Firebase Inapp Messaging SDK component due to causing Cordova CLI build issues.
- Resolves #326.
- (iOS) Override CDVPlugin class abstract method
handleOpenURL
instead of implementing app delegate methodapplication:openURL:options
to prevent conflicts with other plugins.- Resolves #328.
- (Android) Fix parsing of existing
colors.xml
when it only contains a single<color>
to prevent overwriting the existing value.- Fixes #284.
- (Doc) Document custom FCM message handling.
- (Doc) Rationalise heading levels.
- (iOS) Implement message receiver mechanism (equivalent to existing Android mechanism) to enable custom handling of specific message types.
- (Android) Extend custom receiver to handle payload obtained from system notification message bundle received while in background/not running.
- (Android) Ignore invocation of auth state change listener at app start (same as on iOS) to prevent error due to race condition with plugin initialisation.
- Add support for Firebase inapp messaging
- Merged from PR #312.
- Add support for Firestore realtime database. Resolves #190.
- (Doc) Add note regarding persistence of data collection settings. Resolves #315.
- (iOS) Added missing Google Tag Manager Pod for iOS.
- Merged from PR #318.
- (iOS) Don't set
FirebaseScreenReportEnabled=false
in app list whenFIREBASE_ANALYTICS_COLLECTION_ENABLE=false
. Resolves #317. - (Android) Disable strict version check in Google Services plugin for Gradle as it causes erroneous build failures.
- Add
registerAuthStateChangeListener()
to support invocation of a callback function on the Firebase Authentication state changing. Resolves #311. - (Android) Bump Firebase SDK dependency versions to latest releases. Resolves #279.
- (iOS) Bump podspec versions for Firebase SDK components to latest release (v6.17.0)
- BREAKING CHANGE: Rework
verifyPhoneNumber()
to preserve and reference the native credentials object (rather than attempting to extract and parse its properties to JS). Fixes #176. - Add other Firebase Authentication methods: Google Sign In, Sign In with Apple, email/password sign in, and authentication utility methods. Partially resolves #208.
- (Android) Add check
google-services
plugin does not already exist. Fixes #282. - (iOS) Update pinned Firebase SDK versions to latest v6.13.0. Resolves #232.
- (Android) Fix error caused by local variable
- Merged from PR #229.
- (iOS Hook) Fix retrieving Xcode project path
- Merged from PR #234.
- (Android) Check google-services plugin doesn't already exist in Gradle script
- Merged from PR #281.
- (Android) Replace references to cordovaActivity with applicationContext when app is not running and therefore cordovaActivity doesn't exist. Resolves #165.
- Fix .forEach is not a function. Merged from PR #219. Resolves #213.
- (Android) Parse this plugin's
plugin.xml
to extract default values for plugin variables not explicitly set at plugin install time. Fixes #218. - (iOS) Fix after_prepare hook to run on multiple platforms so if they are added in one operation using
cordova prepare
, both platforms are processed. Fixes #221. - (Typedef) Update the typedef for recent plugin API changes.
- (iOS) Update Firebase SDK to v6.11.0 released 22 Oct 2019
- (Android) Update pinned Firebase SDK versions to latest as of 25 Oct 2019 Resolves #207
- (Doc) Document parameter types in API functions. Resolves #140
- (Doc) fix
onMessageReceived()
code sample. Merged from PR #142. - (Doc) Example sound name for custom Android notification sound. Resolves #160
- (Feat): add Typescript declaration Merged from PR #166.
- (Doc) Fix
createChannel()
examples. Merged from PR #167. - (Android) Expose
description
notification channel field. Merged from PR #168. - (iOS) Update CocoaPods spec url to new CDN. Merged from PR #173.
- (Doc) Fix code example for default android icon. Merged from PR #174.
- (iOS) Support iOS 13 APNS format token change. Merged from PR #177.
- (Hook) Remove check for presence of platform in
config.xml
Merged from PR #185. - (Feat) Expose Firebase Messaging autoinit API functions to allow enabling/disabling/checking of autoinit.
- If disabled and
unregister()
is called, a new token will not be automatically allocated. - Resolves #147.
- If disabled and
- (iOS) Fix
logEvent()
so it doesn't generated warning message in console. Fixes #154. - (iOS) Handle notification messages that contain
"content-available":1
which wakes up the app while in the background to deliver the message payload immediately when the message arrives (without requiring user interaction by tapping the system notification). Fixes #158. - (Android)(Do) Clarify Android custom notification icons example. Resolves #183.
- (Doc) Add example of using stacktrace.js with
logError()
. Clarifies #118. - (Doc) Add link to cordova-plugin-firebasex-ionic3-test Ionic 3 example project
- Add
signInWithCredential()
to sign user into Firebase account andlinkUserWithCredential()
to link user account with credentials obtained viaverifyPhoneNumber()
. - (Android) BREAKING CHANGE Rework
verifyPhoneNumber()
- Remove redundant
verified
in returned credentials object. - Support mocking of instant verification for
verifyPhoneNumber()
on Android for integration testing.
- Remove redundant
- (iOS) BREAKING CHANGE Rework
verifyPhoneNumber()
- Return the same credential object structure as Android.
- (iOS) Add
SETUP_RECAPTCHA_VERIFICATION
plugin variable to automatically set up reCAPTURE verification for phone auth. - (Doc) Add section to explicitly document all supported plugin variables.
- (iOS) Add
onApnsTokenReceived()
to register a callback function to be invoked when the APNS token is allocated. Resolves #201. - (Android) Tweak default empty values when sending stacktrace using
logError()
- (Doc) Better example of using
logError()
to track unhandled JS exceptions vs logging a non-fatal logical error. - (iOS) Modify
logError()
to send stacktrace.js output as an actual stacktrace instead of custom keys. Resolves #118. - (Hook) Fix parsing of
config.xml
to extract app name. Fixes #139. - (Android) Ensure functions which return a boolean result return an actual boolean type rather than a binary integer. Fixes #153.
- (Hook) Rework hook scripts to:
- (iOS) Add
getAPNSToken()
plugin API method to get the APNS token on iOS. Derived from merging PR #100. - Merge PR #103 - fix for app name containing an ampersand.
- Merge PR #115 - fix for short attribute in app name.
- Merge PR #121 - fixes missing resolution of promise in after_prepare hook which caused other plugins to not run their after_prepare script (a bug introduced in v6.0.7)
- (Android) Merge PR #64 - replace Android hooks scripts to configure Gradle with actual Gradle configuration.
- (iOS) Add missing
tap
property for notification messages received while app is running in background.- Based on arnesson#1104
- Resolves #96
- (iOS) Fix issues causing foreground notifications not to display on first run. Fixes #109.
- (iOS) Update string format when subscribing/unsubscribing topics. Resolves #110.
- Support disabling of data collection (analytics/performance/crashlytics) at app startup and manual enabling of these at runtime.
- Remove Android implementation of
getBadgeNumber()
/setBadgeNumber()
as it doesn't work on Android 8+.- Resolves #124.
- Merge PR #93: Update Fabric dependencies
- Port code to apply IOS_STRIP_DEBUG plugin variable to Podfile into this plugin's hook scripts (from cordova-plugin-cocoapod-supportx).
- Fixes #89.
- Fix parameter type passed to hasPermission success callback for Android. Fixes #83.
- Fix
hasPermission()
to return boolean result on Android (same as iOS).- Update docs to flag this as a breaking change from
cordova-plugin-firebase
. - Resolves #81.
- Update docs to flag this as a breaking change from
- Replace dependency on
cordova-lib
withxml2js
. - (iOS) Restore placeholder GoogleService-Info.plist.
- Partially reverts a9c66746ca3592f0eec217f7701d5835f33b43c5
- See #74
- (iOS) Handle and report native logical errors.
- (iOS) If grantPermission() is called when permission is already granted, return an error (rather than attempting to grant permission again which causes issues).
- See #61
- (iOS) Run badge number operations on UI thread (instead of background thread).
- Resolves #72
- (iOS) Handle situation where value of sound is not an NSString.
- See #61
- (iOS) Add try/catch handlers at all code entry points to handle unexpected exceptions in order to prevent app crashes. Log native exceptions to native and JS consoles.
- See #61
- Remove
google-services.json
andGoogleService-Info.plist
placeholders.- See #63
- (Android) Improved exception handling to prevent app crashes due to plugin exceptions. Document caveats of received message payload when notification message is received while app is not running on Android. Further resolves #52.
- (Android) Expose notification message properties in message object sent to onMessageReceived(). Ensure message is always sent to onMessageReceived(), regardless if it was tapped. Resolves #52.
- BREAKING CHANGES
onMessageReceived()
is now called when a message is received (data or notification) AND when a system notification is tapped (whether app is running or not)- Resolves #48.
- The
tap
parameter passed toonMessageReceived()
is only set if a system notification is tapped- If the system notification was tapped while the app is running in the foreground, the value will be
tap: "foreground"
- If the system notification was tapped while the app is not running / in the background, the value will be
tap: "background"
- If the system notification was tapped while the app is running in the foreground, the value will be
- BREAKING CHANGES
onNotificationOpen()
renamed toonMessageReceived()
- Changed key names for custom notification properties in FCM data messages to display system notifications in foreground.
- Message payload is always delivered to
onMessageReceived()
for both data and notification messages. messageType
key indicates type of FCM message:notification
ordata
tap
is only set whenmessageType
isnotification
- Explicit dependency on
cordova-plugin-androidx-adapter
since Android implementation uses AndroidX so is incompatible with Android Support Library. - Set
remote-notification
background mode in native Xcode project for iOS. - Reworked plugin documentation.
- Support customisable display of system notifications while app is in foreground for both notification and data messages (both Android & iOS).
- Set default color accent and notification channel for FCM notifications.
- Add support for default and custom notification channels for Android 8+
- Customise importance, visibility, LED light, badge number, notification sound and vibration pattern
- Calling
logError()
on Android now also logs to native logcat (as well as a non-fatal error to remote Crashlytics service). - Fix
logError()
on iOS to log non-fatal error to remote Crashyltics service. - Implement stubs for
hasPermission()
andgrantPermission()
on Android so they both return true in to the success callback. - Rationalise permission check/request on iOS.
- Remove legacy support for iOS 9 and below.
- Support overridable default color accent for Android notification icons via
ANDROID_ICON_ACCENT
plugin variable.
- BREAKING CHANGE: set min supported versions to
cordova@9
andcordova-ios@5
.- Drop dependency on cordova-plugin-cocoapodsx to install pod dependencies.
- Instead update plugin.xml to use podspec formatting as required by cordova-ios@5.
- Remove iOS plugin variables as these are not (currently) supported by cordova-ios@5
- Resolves #22.
- [iOS] Add support for stripping debug symbols for libraries included via Cocoapods. Resolves #28.
- [iOS] Ensure runpath search path contains
$(inherited)
to avoid build warnings/issues. Resolves #25.
- Update iOS to Firebase SDK v6.3.0 (from v5.20.2) - major version increment so update source code for breaking changes to API. Resolves #9.
- Add support for NDK crashlytics on Android. Resolves #17.
- Bump min version of cordova-plugin-cocoapod-supportx to 1.7.2 which fixes bug when using a plugin variable to specify the
ios-min-version
in<pods-config>
- Bump min version of cordova-plugin-cocoapod-supportx to 1.7.1 which supports using a plugin variable to specify the
ios-min-version
in<pods-config>
- Implement didReceiveRegistrationToken delegate for iOS. Resolves #16.
- Document dependency on Cocoapods. Resolves #15.
- Make min iOS version configurable. Resolves #14.
- Update legacy Xpath reference to
<application>
element inAndroidManifest.xml
- Bump default iOS Firebase SDK version to 5.20.2 (https://firebase.google.com/support/release-notes/ios#version_5202_-_april_10_2019). Resolves #8.
- Reapply: Support user-overriding of default Android Gradle & iOS Cocoapods versions using plugin variables.
- Revert: Support user-overriding of default Android Gradle & iOS Cocoapods versions using plugin variables.
- Since it's not working on iOS due to Cocoapods plugin dependency.
- Need to fix that plugin to handle plugin variables then reinstate this change in a major version release.
- Support user-overriding of default Android Gradle & iOS Cocoapods versions using plugin variables.
- Update Android source to use AndroidX class names and adds dependency on cordova-plugin-androidx for forward compatibility with future versions of Firebase libraries on Android.
- Note: if you include other plugins in your project which reference the legacy Android Support Library, you'll still need to include cordova-plugin-androidx-adapter in your project to dynamically patch them.
- Pins Firebase and Crashlytics Gradle dependencies to latest major version (to prevent build failures due to unexpected changes in subsequent major versions).
- Set minimum supported versions to
cordova@8+
,cordova-android@8+
,cordova-ios@4+
.
- Use Cocoapods to satisfy iOS Firebase SDK (rather than bundling with plugin). See arnesson#972.
- Add support for logMessage() and sendCrash() functions (ported from cordova-fabric-plugin)
- Bump version of Crashlytics library on Android to current latest (v2.9.8 - Dec 2018)
- Bump Firebase SDK versions in iOS PodSpecs to latest version (v5.15.0)
- Remove redundant build-extras.gradle
- Set minimum iOS version to 9.0 in podspec
- Remove unnecessary extra block which can lead to race condition
- Fixes issues cause by Firebase SDK updates on 5 April 2019 (https://firebase.google.com/support/release-notes/android#update_-_april_05_2019) which removed deprecated API features causing Android build failures. See https://github.com/arnesson/cordov
- Fix compatibility with cordova@9 CLI
- Add explicit dependency on cordova-lib to prevent build error on iOS. Fixes #2.
---> FORKED FROM cordova-plugin-firebase
AS cordova-plugin-firebasex
<---
- #897: Fixed issue with after_prepare hook not copying required files
- #866: Fixed issue with loading .plist file on some iOS devices
- #874: Added new api
setCrashlyticsUserId
which allows setting Crashlytics user identifier - #861: Updated
verifyPhoneNumber
api on android to add the following properties to the returned object:code
- sms codeverified
- whether or not the verification was successful
- #869: Replace add/remove hooks with install/uninstall hooks to ensure proper configuration of the plugin
- #870: Add error handling to
fetch
api on iOS
- #837: Fixed android build
- #796: Update Firebase SDK Version to 5.x
- #822: Can't use initFirebase() on 1.1.3 [Firebase isn't initialized]
- #827: doc missing: initFirebase call needed before anything
- #824: Removed initRemoteConfig method
This version has been deprecated due to complications with PR #784
This version has been deprecated due to complications with PR #784
This version has been deprecated due to complications with PR #784
This version has been deprecated due to complications with PR #784
This version has been deprecated due to complications with PR #784
To force cordova to use this version, add the following to your project's config.xml:
<plugin name="cordova-plugin-firebase" spec="1.0.5" />
or by running:
cordova plugin add [email protected] --save