Firebase Cloud Messaging to an individual User - firebase

I am struggling to connect the dots on FCM and how I should be approach a problem.
I have an app (Golang if it matters) that runs quite a few async jobs. When some of them are completed I want to send a notification to an individual user. I am not connecting from one device to the next, it is initiated by the server and sent directly to the user (web/andoid/ios).
What is the best way to accomplish this? How do I tell FCM the exact user to send the notification to? I couldn't find much clarity in the docs.
Thanks!

Related

Can I use FCM’s onMessage functions to create a live-chat application?

I’m making an app using react with firebase, and a large part of my app involves group communication. Currently I have FCM sending notifications to people within the group whenever someone types a message into chat. Can I use onMessage to load messages in real time for all group members to see, without needing to refresh the page, or do I need to set up firebase real time database ?
Any help/advice is greatly appreciated !
I would recommend to store the messages in one of the Firebase databases. For multiple reasons. You can only send FCM messages from the backend so you need a trigger for that. Idealy when a new messages is added to the database. If all users for a group listen to messages in a group chat they would see them when you setup a realtime listener. This would work much faster and more reliable than using FCM for realtime data. FCM is idealy used to notify users when they are outside of the app or inside the app but not in the chat by using onMessage. The UI should rely only the databse data and not FCM.

React native push notification getting data from API

I'm new to react native and I need some help.
I need to implement a feature that the application informs the client if it has an appointment on the day and if it does, notify him, if not, not notify.
However, I believe that the application needs to check in the API if it has any scheduling and if it has to check if it is on the scheduling day and if it is, send a notification to the client
Correct me if I'm wrong
I'm using react-native-push-notification
But I can't make the logic for this to happen, I can offer my code so they can help me
Suggestion:
You can opt to go with the react-native-push-notification with firebase so that You can able to send the push notification whenever you want through the blackened.
Firebase documentation:Cloud Messaging

Local Notifications vs FCM: Which is right?

I have a fairly straight forward Flutter app which incorporates some "social" features, such as the ability for users to add other users as friends.
When a friend request is "send", a record is added to the Firebase to represent the (pending) friendship. I would like the user "receiving" the friend request to get a notification.
I've looked up a dozen or more posts on using local notifications and FCM, but all I can find are bare-bones PoC style examples. I'm at a loss to understand which methodology is correct for this situation.
Can FCM somehow listen for changes on the database, so when the friend request record is created, it would then push a notification? Or should the receiving user's app be listening for changes to the friend requests and push a local notification?
I'm at a loss for where to start.
Thanks in advance!
The answer is "You have to make your backend listen for changes on the database and send FCM".
If you are using firestore as your database, you can use cloud functions to listen to the changes made to your database. You can read more about it here:
https://firebase.google.com/docs/firestore/extend-with-functions
If you are using a backend of your own, you can make the backend send FCM to a user using the firebase admin sdk for whatever language you are using.

Firebase notifications security / console activity log

i'm thinking about using Firebase for the notification service that my app needs. However, its important that the process of sending notifications is secure. I want to avoid a notification being sent from any member of the team without permission.
One way could be assigning restricted roles and permissions for the team members. However it also would be good to have any kind of activity log in the console, or have a log of all notifications sent including the name of the user. The console currently allows you to see all notifications sent, but i cannot see who sent it, and also the notification can be deleted from the log.
Any ideas on how to manage this? Which specific roles would you recommend me to use? Is it possible with Firebase?
You could write a function in Firebase which sends notifications, and you have logs on that function. Here is how to write a function which send notifications

Dynamic Push Notifications

I know that Firebase has recently added support for Push Notifications and while this is a great thing, I only seem to be able to send push notifications manually via the Notifications Panel.
What I'd like to do is to send push notifications within a user scope...Let me explain that. Each User in my App has an account and then each user can join a group. Within this group the user can perform tasks and has a list of chores to do. Now when certain tasks are due for example I want to remind the user of doing it with a push notification. For 1-10 I might be able to pull this off manually, but is there a way to dynamically based on the data in the Database send out Push Notifications?
I know that certain Push Notifications can be created using the Analytics tool such as "Hey you have not visited for 3 days, please come back whatever"... but I'd like to register push notifications such as "I just created a task, this task needs to be done within 3 days. Remind me in 3 days if the task is still not done".
Is this possible with Firebase or do I need to have my own server connecting to Firebase and handling those events?
-xCoder
You need to implement FCM in your client and in a server. Let me put this straight:
First, you need that your client, or app, to register into FCM and get a FCM token that will be used to identify that device uniquely.
Then, store that token wherever you like. It can be into firebase database or other server you may like. I recommend you to store it into firebase if you are using it as a database for your users; that's my case.
Also, you need to implement a http or xmpp server in order to send FCM messages to your registered devices containing the data you are interested in. For example, you can implement a Google App Engine endpoint (can be done with Android Studio and Java) that is quite simple or a NodeJS module, depending on your preferred language.
If you are using Firebase as database you can connect from your server with the appropriate SDK and get the FCM tokens you want from your users, and then send the message to those with data. Don't forget to secure your serve.
The way you implement your server algorithm to send FCM messages depends on your app purposes.
Hope it is clear enough for you. Also you can find all the documentation with a short video that explains the general structure here: https://firebase.google.com/docs/cloud-messaging
You can use cloud functions to trigger on any create, update or delete operation in your database and in the trigger event, you can choose to send in FCM push notifications to the devices of your choice.
Here is the documentation regarding the use and structure of a cloud function: https://firebase.google.com/docs/firestore/extend-with-functions
Hope this helps!

Resources