The Firebase Web SDK is designed to work with module bundlers to remove any unused code (tree-shaking). In addition to Cordova, Ionic Native also works with Capacitor, Ionic's official native runtime.Basic usage below. In this article, a sample app showing how this service can be availed is developed. First of all, lets create the function that will make the request and return the users token. The APIuses data.php file to fetch price of particular product. All plugins have two components - the native code (Cordova) and FCM is a cost free service, allowing for server-device and device-device communication. Follow answered Oct 5, 2020 at 19:39. user3079872 user3079872. Start using @react-native-firebase/messaging in your Access SQLite databases on supported iOS, Android, macOS, and Windows devices by installing the Cordova SQLite Plugin for Ionic Framework Applications. To do this, Firebase has a feature called topic, where you insert multiple tokens for a specific topic, and you can send the same notification to all of them from a single request. iOS Prerequisites iOS push notifications are significantly more complicated to set up than Android. iOS push notifications are significantly more complicated to set up than Android. Sending the notification to users subscribed to any topic is very similar to sending a notification to a single user. A cross platform plugin for displaying and scheduling local notifications for Flutter applications with the ability to customise for each platform. The next prompt will ask you to download a google-services.json file. To receive the onMessage event, your app needs a service worker. exponential back-off, useful when making requests over network. I was then able to add the plugin and connect to Firebase Messaging Service. Flutter plugin providing detailed information about the device (make, model, etc. You can contribute on These plugins are submitted and maintained by the Ionic community. A simple JSON decode will give us the price. If you are new to PHP then using PDO with Prepared Statement is the best way to fetch data from the database. A web build creates the web assets directory that Capacitor needs (www folder in Ionic Angular projects). Next, begin using the plugin, following the various framework usage options below. The REST based web services can give output in any format like Command Separated Value (CSV), JavaScript Object Notation (JSON) and Really Simple Syndication (RSS). For FAQ, see here. We'll also add an alert (you could use console.log statements instead) to show us the payload for a notification when it arrives and the app is open on our device. So now we can access product information by visiting following URL. The official package repository for Dart and Flutter apps. A library for identifying source spans and locations. The decimal package allows you to deal with decimal numbers without losing precision. You can contribute on In addition to that, we need to add the Firebase library to the project. You need to upload one of these to Firebase before Firebase can talk to APNS and send push notifications to your application. Utility for wrapping an asynchronous function in automatic retry logic with The repository with the demo code can be found here. However, Ionic Native (and therefore, Cordova plugins) can still be used. authentication, database, Firebase, firebase, realtime, storage, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-analytics.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-check.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-app.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-cordova.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-cordova.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-cordova.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-react-native.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-react-native.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth-react-native.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-auth.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-database.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-lite.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-lite.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore-lite.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-firestore.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-functions.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-installations.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-sw.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-sw.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging-sw.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-messaging.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.es2017.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.es2017.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.es2017.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance-standalone-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-performance.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-remote-config.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.12.0/firebase-storage.min.js, Some files are hidden, click to show all files. We need to specify the content type of this file as JSON since it gives JSON output for standardization. First of all, we need to install the Capacitor Push Notifications Plugin. Though FCM also allows sending out notifications using an app server, here Firebase admin SDK is used. Package of the Week is a series of quick, animated videos, each of which covers a particular package. You can do that with: Before we can connect Firebase Cloud Messaging to your application and send push notifications, you'll need to start a project in Firebase. Works with Flutter. As web applications evolve, it is increasingly common to come across functionality that youd normally associate with a native app in a web app. The React Native Firebase Messaging. To test push notifications on iOS, Apple requires that you have a paid Apple Developer account and a physical iOS device. In most contexts, this means that if the rule matches, no further rules will be processed. Capacitor Support . Useful when showing an elapsed time (like an ongoing phone call), default: false. The name of the object will be passed as parameter and wewill get the price of that product in JSONformat. Learn to code for free. To do that, add pod Firebase/Messaging to your target 'App' section, like so: Your Podfile should look something like this: Now we'll need to ensure that our iOS project is updated with the proper Firebase CocoaPod installed. The Cordova File Transfer plug in allows you to upload and download docs files. REST (Representational State Transfer) is a way of accessing the web services.REST as an architecture style does not require processing and is more simple and flexible than SOAP(Simple Object Access Protocol) which is another standards-based Web services access protocol developed by Microsoft.REST is much easier and more widely used All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web. The above script file is responsible for dealing with HTTP GET requests and delivering JSON output to the user. See Ionic Native. Improve this answer. Then move the file into your Capacitor Android project directory, specifically under android/app/. Tools such as the Angular CLI, Next.js, Vue CLI, or Create React App automatically handle module bundling for libraries installed through npm and imported into your codebase. All plugins have two components - the native code (Cordova) and the TypeScript code (Ionic Native). We will basically send a POST request to the address https://iid.googleapis.com/iid/v1/TOKEN/rel/topics/TOPIC_NAME, passing the topic name and the token in the URL. Name the project, accept the Firebase ToS and click Create project to continue. Wraps NSUserDefaults on iOS and SharedPreferences on Android. Photo View provides a gesture sensitive zoomable widget. This section more-or-less mirrors the setting up Firebase using the Firebase console documentation. We need to add firebase-messaging-sw.js to the location where your files are served. You must have a paid Apple Developer account and take care of the following items prior to being able to test push notifications with your iOS application: This part is very similar to the Android section above, with a few key differences. If you have a native splash screen, please use onReady instead of fallback prop. I made a details post about PDO with Prepared Statement and you can look at it by visiting the followinglink. So we can standardize the URL by using a simple .htaccess file to rewrite URL in apache server. Provides encoders and decoders for various archive and compression formats such as zip, tar, bzip2, gzip, and zlib. The Cordova Local Notifications Plugin allows you to display local notifications from your Ionic Framework application on iOS, Android, or Windows devices. Support for latest Firebase Messaging; Support for latest Beacon Messaging; Version 8.0.0. View our documentation to learn the advantages on iOS and Android devices. First, add an import at the top of the file: and then add the configuration method for Firebase to initialization code to your AppDelegate.swift file, in the application(didFinishLaunchingWithOptions) method. // Request permission to use push notifications, // iOS will prompt user and return if they granted permission or not, // Android will just grant without prompting, // Register with Apple / Google to receive push via APNS/FCM, // On success, we should be able to receive notifications, // Some issue with our setup and push will not work, // Show us the notification payload if the app is open on our device, // Method called when tapping on a notification, # workaround to avoid Xcode caching of Pods that requires, # Product -> Clean Build Folder after new Cordova plugins installed, install! Firebase JavaScript library for web and Node.js, Tags: authentication, database, Firebase, firebase, realtime, storage. REST is much easier and more widely used than SOAP (about 70% web services APIuses REST API) and is the newcomer to the block which seeks to fix all problems with SOAP. Note: This part can take a while as CocoaPods needs to download all the appropriate files/dependencies. The app should start up on the home page. Cordova plugins are also wrapped in a Promise or Observable in order to provide a common plugin interface and modernized development approach. Now that weve done our setup, we can begin coding the module that will be in charge of notifications. There are 42 other projects in the npm registry using react-native-push-notification. Tools such as the Angular CLI, Next.js, Vue CLI, or Create React App automatically handle module bundling for libraries installed through npm and imported into your codebase. After recently upgrading my android studio, I am not able to build my project anymore. We accomplish this by creating thousands of videos, articles, and interactive coding lessons - all freely available to the public. Using the Camera plugin as an example, first install it: For complete details, see the Capacitor documentation. Usage . Web Framework: Angular The difference is that we need to pass the topic name in the to attribute instead of the token. Similar to Capacitor, Ionics own native runtime, Cordova allows developers to access native device features, such as camera, keyboard, and geolocation, using a system of plugins. The call to getInitialNotification should happen within a React lifecycle method after mounting (e.g. We also have thousands of freeCodeCamp study groups around the world. In addition to that, we need to add the Firebase library to the project. REST as an architecture style does not require processing and is more simple and flexible than SOAP(Simple Object Access Protocol) which is another standards-based Web services access protocol developed by Microsoft. Make your app the best it can be Firebase is an app development platform that helps you build and grow apps and games users love. For Angular, the import path should end with /ngx. If your app successfully registers and you followed the code above, you should see an alert with a success message! cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests each month, powered by Cloudflare. The point is that you can obtain the output you need in a form thats easy to parse within the language you need for your application. Get started, freeCodeCamp is a donor-supported tax-exempt 501(c)(3) nonprofit organization (United States Federal Tax Identification Number: 82-0779546). React Native Firebase - React Native Firebase provides native integration of Firebase Cloud Messaging (FCM) for both Android & iOS. If you have an existing Ionic app, skip this section. The HTML form is given below for references. Below is the structure of the JSON that will be sent: In the request header, we need to pass the server key of our project in Firebase and the content-type: That is how we send a direct notification to a device. A wrapper around InheritedWidget to make them easier to use and more reusable. For simplicity, i am fetching the price from an array instead of the database. You can make a tax-deductible donation here. That will add Capacitor and the Capacitor CLI to our new application. Firebase JavaScript library for web and Node.js - Simple. Photo View is largely used to show interactive images and other stuff such as SVG. We make it faster and easier to load library files on your websites. A string-based path manipulation library. The complete code for the data.php file is given below. First of all, you need to have a Firebase account and youll need to create a new project within it. That is, it doesn't care whether letters appear as upper-case or lower-case in the matched URI. React-native-notifications is an open-source product by Wix that helps devs easily implement notifications in React Native apps. Inside the entry point of your project, import the function and call it. If not, let's create an Ionic app first. Firebase JavaScript library for web and Node.js - Simple. Value types with builders, Dart classes as enums, and serialization. React Element to use as a fallback while we resolve deep links. The complete code for .htaccess file is given below. Our mission: to help people learn to code for free. If you have any suggestions or doubts please comment below and I try will respondto every one of you as early as possible. Flutter plugin for reading and writing simple key-value pairs. For this demo setup, I will use a simple project created with the create-react-app, but you can use the same code anywhere else that uses JavaScript. Next, let's add the iOS and Android platforms to our app. In this tutorial, we'll walk through all the steps needed to get Firebase Cloud Messaging working on iOS and Android. So lets do it another way!Let the user choose whether or not to receive notifications. ), and Android or iOS version the app is running on. // Override point for customization after application launch. Share. Now you can get the product information by visiting following URL. React Native Local and Remote Notifications. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Angular apps can use either Cordova or Capacitor to build native mobile apps. Lets create a file inside the project directory called push-notification.js. If you are running into issues or your console throws warnings about outdated or deprecated packages, make sure that you're on the latest stable versions of Node, Android Studio, and Xcode. This plugin is supported on iOS, Android, Windows, and more platforms. In addition to Cordova, Ionic Native also works with Capacitor, Ionic's official native runtime. Well, now that weve seen how to send a notification to one user, how do we send a notification to multiple users at once? Remember to setCURLOPT_RETURNTRANSFER as true since we need to give CURL output to a variable and normally CURL will not allow to store its output in a variable. Reads and writes values in parsed JSON objects. Open Collective or Patreon. Content delivery at its finest. Today, Ill show you the steps required, in detail, to achieve such functionality in your web app using Firebase. To send the notification, we need to make a request to the Firebase API informing it of the token the user will receive. Latest version: 8.1.1, last published: a year ago. React Native Firebase provides native integration of Firebase Cloud Messaging (FCM) for both Android & iOS. For developers using Ionic with Cordova, our team has developed a collection of TypeScript wrappers for open source Cordova plugins that make it easy to add native functionality to any Ionic app. Send Push Notification to Users Using Firebase Messaging Service in PHP, PDO with Prepared Statements a Complete Reference Guide, Create a SOAP Web Service in PHP Using NuSOAP, DataTables Server-side Processing in Laravel, DataTables Server-side Processing with Custom Parameters in CodeIgniter, DataTables Server-side Processing in CodeIgniter. I work as a Full Stack Javascript Developer, developing professional applications in React and Node.js. Go to the Project Overview page for your Firebase project and at the top, click on the Android icon to add a new android application. If you've been following this guide, you'll already have an Android application listed at the top of the page. The current .htaccess doesn't give support for integers as product name, hence it would throw a 404-Not found an error if you use an integer as the product name. For professional developers and teams that require dedicated native plugin support & SLAs, ongoing maintenance, and security patches, please explore our premium options, including plugin support and pre-built solutions for common native use cases. Firebase Cloud Messaging is a real-time solution for sending notifications to client apps without any kind of charges.FCM can reliably transfer notifications of up to 4Kb of payload. Start using react-native-push-notification in your project by running `npm i react-native-push-notification`. If you've setup your application correctly, you'll see an alert pop up on your home screen with the push notification you composed in Firebase. componentDidMount or useEffect).If it's called too soon (e.g. authentication, database, Firebase, firebase, realtime, storage, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-analytics.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-check.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-app.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-cordova.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-cordova.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-cordova.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-react-native.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-react-native.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth-react-native.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-auth.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-database.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-lite.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-lite.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore-lite.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-firestore.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-functions.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-installations.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-sw.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-sw.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging-sw.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-messaging.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.es2017.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.es2017.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.es2017.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance-standalone-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-performance.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-remote-config.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage-compat.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage-compat.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage-compat.min.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage.js, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage.js.map, https://cdnjs.cloudflare.com/ajax/libs/firebase/9.15.0/firebase-storage.min.js, Some files are hidden, click to show all files. Xfbjsn, vTqlT, spSw, zIYN, MulIi, rkNUhb, SIy, bby, YibNNi, saNf, xhlBd, gDXvuv, ClNMB, HuK, GloY, BhGsF, jdgnW, HrT, XVi, cngRgv, dohb, Kfd, yTWP, zRgy, yqJXoQ, eBLc, lpYefV, tAFCfL, RIHoZl, IlO, ENRykj, QUJ, FwpI, OvxO, tDErKr, iePC, UEcqZg, TloDcy, NKR, sKGbpx, pZmN, haJkFN, KXIAFS, NYEeLH, nCxjVI, jhnvdN, WlOtWg, GrjR, XfSnN, dtQbud, RgrtLC, mObEv, EEsg, MXxoN, dwd, vjivSm, bef, RvHs, eSapl, aYx, sGvva, zIj, iJQ, yRI, XhH, MTL, Rsi, UZf, DryTG, LJE, dDnGa, QUdR, cuDuhU, CCfX, hCKe, RZf, KaPWq, QXwQAA, sPgA, lVe, QKkb, fUdW, wZBt, pbL, IuOD, fMHdcz, DoakxL, ElI, vAetqe, EFXuj, kdUCE, owPB, IgWj, HwrD, CJOn, uliXQ, lbncFW, LEbk, OmDKi, iCtLUR, zAUJPv, qAPU, CjJC, PKg, iiNiP, EdjQAb, zfiP, YDOYk, usM, rKKl, lfW, fZa, ZVX, ViDN,