The Firebase Realtime Database provides a flexible, expression-based rules language with JavaScript-like syntax to easily define how your data should be structured, how it should be indexed, and when your data can be read from and written to. Combined with our authentication services, you can define who has access to what data and protect your users' personal information from unauthorized access.
By default, your database rules require Firebase Authentication and grant full read and write permissions only to authenticated users. The default rules ensure your database isn't accessible by just anyone before you get a chance to configure i
https://firebase.google.com/docs/database/security/quickstart
The above pretty much sums up how to use the email verification scheme with Firebase. So far, it stands as one of the simplest ways to verify email I have seen.
There's a bit of an extended explanation of the above example available on Email Verification with Firebase 3.0 SDK.
Firebase Storage provides secure file uploads and downloads for your Firebase apps, regardless of network quality. You can use it to store images, audio, video, or other user-generated content. Firebase Storage is backed by Google Cloud Storage, a powerful, simple, and cost-effective object storage service.
Firebase Storage stores your files in a Google Cloud Storage bucket shared with the default Google App Engine app, making them accessible through both Firebase and Google Cloud APIs. This allows you the flexibility to upload and download files from mobile clients via Firebase and do server-side processing such as image filtering or video transcoding using Google Cloud Platform. Firebase Storage scales automatically, meaning that there's no need to migrate from Firebase Storage to Google Cloud Storage or any other provider.
This integration makes files accessible directly from the Google Cloud Storage gcloud client libraries, so you can use Firebase Storage with your favorite server-side languages. For more control, you can also use the Google Cloud Storage XML and JSON APIs.
Firebase Storage integrates seamlessly with Firebase Authentication to identify users, and provides a declarative security language that lets you set access controls on individual files or groups of files, so you can make files as public or private as you want.
See the public docs for Firebase Storage for the most up to date APIs, samples, and example apps.
Crash Reporting creates detailed reports of the errors in your app.
Errors are grouped into clusters of similar stack traces and triaged by the severity of impact on your users. In addition to automatic reports, you can log custom events to help capture the steps leading up to a crash.
Crash Reporting is currently in beta release while we resolve some known issues on Android and iOS.
Firebase is a suite of integrated products designed to help you develop your application, grow an engaged user base, and earn more money. It includes tools that help you build your app, such as a realtime database, file storage, and user authentication, as well as tools to help you grow and monetize your app, such as push notifications, analytics, crash reporting, and dynamic links.
You can think of Firebase as a set of Lego bricks that you can use to build your masterpiece. Just like bricks, Firebase is relatively unopinionated, since there are an infinite number of ways to combine the pieces and we're not going to tell you that certain ways are wrong :)
FirebaseUI is built on Firebase and provides developers simple, customizable, and production-ready native mobile bindings on top of Firebase primitives to eliminate boilerplate code and promote Google best practices
In the Lego analogy, FirebaseUI is a set of pre-built kits with instructions that you can take off the shelf and tweak to suit your needs. You can see how we used the individual components of Firebase to build FirebaseUI because FirebaseUI is open source. FirebaseUI has to be opinionated--we're telling you how we think the bricks should go together, so we make some choices. But because FirebaseUI is open source, you can go in and change what we're doing to better suit your individual needs.
If you're building a Lego city, you'd rather pull a bunch of houses from a pre-build collection and modify slightly to suit your needs than start from scratch and design each building by hand, right?
FirebaseUI let's you do exactly this, which is why we include it in our sample apps and examples. Developers (ourselves included) are lazy--we want the best reuse of our code and the most concise examples, and FirebaseUI allows us to provide really high quality examples that translate to really good user experiences at a fraction of the development cost.
This document is very useful for those who are the beginner of the firebase analytics.This will be very helpful to understand how's firebase analytics works in the diffrent scenario.
What should I use? Disk persistence or keepSynced calls?
From my experience I can say that it always depends of what your app is working, and how you manage the transactions and database of your application. If for example you have an application where the user is just writing and reading data but he is not able to delete or edit it, use DiskPersistence
would be the right choice.
Also, DiskPersistence
will store data in cache, which means that your app will use more space in the user's devices, which maybe is not the best idea in your case.
In other hand, if your application manages a lot of complex transactions and your data is updated really often, possibly you should avoid DiskPersistence
and use keepSynced
in the references that you want to keep fresh.
Why?
DiskPersistence
stores the data retrieved in local, which sometimes can cause lot of desynchronization showing your data if you don't use it together with continous ListenerValueEvents
. For example:
To avoid this the best idea is keep continous listeners in the references that you want to track all time.
Can I use both together?
Of course you can, and in most of the apps possibly is the best idea to avoid download a lot of data and give the user the possibility to work with your app even if he has no connection.
If you don't care about use cache space in the user device, I recommend you to enable diskPersistence
in your FirebaseDatabase
object and also add a keepSync
flags to each reference that can have a lot of times in a short space time or you want to keep fresh all time.