I need to understand how FCM collect user data.
I know that FCM need to store some data (like deviceID) in order to send, for example, notification to a specific device.
My question is: where, in the world, these datas are stored?
Can I set a GCP location for this Firebase service? Or is inherited from GCP location settings in 'project settings' ?
Thank you!
Some services in GCP and Firebase are global, that is the case of FCM.
You can find information related to location storage in other Firebase services through this link:
https://firebase.google.com/docs/projects/locations?authuser=0&hl=en
Notice there is no information about FCM because Google does not provide it and you should not be affected by it.
If you are worried about GDPR and personal information, do not be, no user provided information is stored there.
Related
I am afraid of some latency when calling Firebase API. So I would like to know where the Firebase API servers are located. Are there any documents? Please help. Thanks.
The official documentation regarding choosing locations for your project, doesn't include an option for the Firebase Authentication. So currently, there is no way to specify a particular location for storing the Firebase Authentication data.
However, when you are using Cloud Firestore, Cloud Storage, or Cloud Functions for Firebase, you're prompted to select your project's default location. On the other hand, when using the Realtime Database, you're prompted to select the location of the instance, and each instance can be in a different location.
If you are also using Analytics, you're also prompted to select an Analytics reporting location. You can select a country or region that represents the location of your organization.
How can I send different push to different Countries via Cloud messaging? I searched the official documentation for an answer, but I couldn't find anything. I need this for Android. Thank!
There is no built-in feature to target users by geo in Firebase Cloud Messaging.
The first two options that come to mind are:
Define an audience with Google Analytics for Firebase of users in the region. Then use the Notifications panel in the Firebase console to send a message to that audiebnce.
Subscribe each user to a topic for their region when they start the app, and then send the message to the topic for each region.
I'm thinking about implementing Firebase Cloud Messaging without implementing a firebase database and it's unclear to me which features of FCM are supported without having a firebase database.
For instance, getting message delivery statistics (https://firebase.google.com/docs/cloud-messaging/understand-delivery) and sending notifications via the firebase console (https://firebase.google.com/docs/cloud-messaging/js/send-with-console). It doesn't explicitly say whether you need a firebase database in either of documents but I'd like to clear about that before implementing it.
So my question is, do you need a firebase database to send notifications via the firebase console or to view message delivery statistics? I know for the latter you need to implement google analytics. And also as a bonus, are there any firebase features that depend on having a firebase database?
Thank you
All FCM features are supported without having to use Realtime Database. They are completely separate products, and are only related as much as you want them to be in your app.
I'm trying to send a verification email without having a firebaseUser, is it possible ?
I know i can do it with user.sendEmailVerification() method but can i do it just by giving an email from a textfield ?
Based on what I knew and what I've read from the documentation, it looks like it's not possible to do this. A Firebase user, a.k.a an user authenticated within Firebase platform is required if you want to send email verification that uses Firebase Email Vetification service.
Well, do not lose hope since there are plenty workarounds to do this. What I would do to achieve this is to use Firebase Cloud Functions to create serverless API platform. I connect Firebase Cloud Functions with Firebase Admin SDK (which also has access to other Firebase services if I am not mistaken).
I send an email using some kind of email service providers such as SendGrid to designated email address (which the app got from user's inputted email) and provide a link to verify there (in the e-mail that sent to designated email address). Then, in the cloud functions, you leverage Firebase Admin SDK to change verification status.
This approach is flexible though, as it can be used to verify a user not only with Firebase Authentication.
Hope it helps. If it's not clear for you, just comment.
Happy coding.
EDIT: After thoroughly read your question again, I realized that my answer is not fully correct. Somehow you still need a specific user to be added within Firebase Authentication database, which you would not want to do manually and let your app do so instead. Perhaps you can use Firebase Admin SDK in this matter. You can read official Firebase documentation for more information regarding Admin SDK.
Is it possible to set up Firebase to allow Auth/DB access into a common/shared database instance - where that instance is setup to be a centralized storage location for some 3rd party service?
For example, let's say there's an analytics service called StackOverflowAnalytics.com .. and so anyone who signs up for that service, can add tracking to their app with some secret user key. And then all the tracking for that Key is pushed to the same Firebase DB instance. And then the user can login via Firebase auth and the rules will restrict that they can only access the node for their Key.
I'm working on a 3rd party analytics client for Android - along the lines https://mint.splunk.com - where I would like to provide users a small Java/Android library they can add to their Android project, and this will help them track different data points while their app is running. The data is made accessible by saving it to the cloud from the device.
I am currently using Firebase, but it seems in order for the Firebase Auth & DB of a given Firebase instance to be accessible - the "specific app signing key" (package name/etc combo) needs to be set in the console for that Firebase instance.
It seems sharing across across unknown apps is not possible on Firebase. And that if I want to support something like that with Firebase (and not have to go to another cloud storage option), then I need to set up some proxy REST client .. like in Java or PHP .. that can serve as a centralized access point to that Firebase instance. Just wanted to check with other folks first in case this has been encountered and perhaps there are best practices already established around this particular case. Thanks
Firebase client libraries are generally not meant to be repackaged for use in other libraries. They're meant to be used at the app level.
A unique SHA-1 key is required on Android for Authentication to work with a particular app identified by package name. This requirement will definitely become a problem for you if you want this to work with arbitrary apps, since you would have to manually enter one for each app that wants to integrate.
As far as I know it's not possible to do what you want without creating a proxy, as you mentioned. I assume that firebase has some app validation that make unfeasible to share the Auth/DB.
Maybe a solution for you is to make a proxy too to access data:
"It looks like in order to access Firebase Analytics data, you export it to BigQuery. This is working for me and is automated."