silent push notifications in react native app - android

We are working on a react native app, in which we have some features where we can do some actions using silent push notifications. we are using react-native-firebase for that.
For sending push notifications we are using firebase cloud functions, here is the payload structure.
let payload = {
token: pushToken,
priority: normal,
data : {
RequestUserID : event.params.requestId,
}
We are not getting callbacks for app when its running in foreground or background ?
Any solution to get silent push notifications so that we can perform some tasks, when app is in foreground, background or killed ?

I don't think it's possible to not give an alert (unless the user disabled them) when the app is backgrounded or killed and receives a push notification. You could send data and run a task while the app is backgrounded if you use a websocket. That would not send an alert. If the app is closed, you won't be able to make it do any task.

You need to send you data in a notification payload instead of in a data payload. As seen in https://rnfirebase.io/messaging/usage

Related

Flutter – push notifications not working in the background when app is killed

I'm trying to build a real time chat app.
I have integrated https://pub.dev/packages/flutter_local_notifications package for push notifications and this works.
I am NOT using Firebase, i am using my own custom backend that uses https://socket.io/ for real time chatting.
I want to receive a push notification when the user sends a chat message. Push notifications work when the app is in foreground or background. However when i terminate my app from the process (app is killed), the push notifications no longer work.
Is there a way to send push notifications without using Firebase so that i can receive notifications even when my app has been terminated from the process? I need this to work both for android and ios.
Basically, I don't recommend any solution for push notifications instead of firebase.
But if you have your reasons to use socket in this case I suggest you take a look into this package how it uses background service and tries to implement your own way to setup socket-based notification background service.
https://pub.dev/packages/background_locator

How can trigger onNotification when app in background React Native Firebase

I am investigating about React Native and Firebase Cloud Messaging. In the document, I see that has 2 types of message can be send to client is:
Notification message ( Or Notification and data message )
Data - only message
The first one can be trigger by client using onNotification, and it only trigger if the app on foreground, if in background no way to trigger that has a notification. Just onNotificationOpened can be fired.
The second is inverse, the app can trigger on foreground and background. In case the app has been closed/swiped, on Android luckily it can be triggered also by using a Handler background. But on iOS if the app closed/swiped that no way until we open app again.
The problem is what type of 2 message above that I can use to listen the notification coming, and how it can work if app in foreground, background and closed.
Hope someone can help me about this.

Is it possible to receive FCM push notifications when app is killed?

I am developing an e-mail app in which I want that the user will get a push notification as soon as they receive new email. And for that purpose I am using FCM. I have just tried push notifications using FCM by following this link: https://www.youtube.com/watch?v=XijS62iP1Xo&t=6s in order to test what features FCM provides. But the problem I face is that the device receives push notifications when app is either in foreground or background but it won't receive any push notifications when the app is closed (swipe or clear from the task manager). I don't know how to achieve this via FCM? I want to receive push notifications just like the WhatsApp and Facebook apps.
Every kind of help is appreciated. Thanks in advance.
There are 2 types of push notifications: Data messages and Notification messages.
If you are using the Data messages you will be in charge of handling the received message and present a notification to the user (if needed of course). But in this case you might miss notifications when your app is closed.
If you are using Notification Messages, FCM is handling the message for you and directly displays a notification if the app is in background/closed.
Please see more here.
It is not possible to receive a push notification in an app that has been killed/stopped by "Force stop" in application settings:
Let me quote the response I got from Firebase Support when I posed them that question:
The Android framework advises that apps that have been stopped (i.e.
killed/force-stopped from Settings) should not be started without
explicit user interaction. FCM follows this recommendation, and thus
does not deliver messages to stopped apps. Here are some documentation
that discuss this topic:
Life of a message from FCM to the device Using Firebase Cloud
Messaging with Android O
This confirms what I observed when I tested it using a simple app.
But you should be able to get push messages from FCM when the app is in background, even if it was swiped off from Recents screen, or after system reboot. That is, unless the manufacturer made the swipe gesture to work the way "Force stop" does on your device. How you receive it in the background depends on whether the push notification contains the "notification" payload:
If it does, you will receive the "data" only if user taps on the notification and it will be delivered in the Intent extras to the activity launched by the notification action.
If it doesn't, you will receive the notification in onMessageReceived just like you do when the app is in foreground.
Some other cases when your app is not killed, but still may not receive push notifications:
there can be delays because of Doze mode if you don't use high priority for the push message
message might not be delivered if your app is background restricted
Yes only if you consider sending data payloads not notifications and handle it in onMessage()
get more info here
How to handle firebase notification on background as well as foreground?
If your App is Killed or in background,check for the Payload in your Launching Screen
in My case it is MainActivity so in onCreate() Check for Extras:
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
Object value = getIntent().getExtras().get(key);
Log.d("MainActivity: ", "Key: " + key + " Value: " + value);
}
}

Async Notifications in react-native

ok so I have an app in react native which retrieves the information from an api. Now the api whenever it has data to send will send the data to the device and I want my app to be always running in background so as to receive the response from the api. API can send data anytime so I want to show the user data received as soon as a message arrives.
You need to look into Push Notifications. You can't guarantee that your app will always be running in the background, but Push Notifications allow you to send data to a user's phone even when the app isn't running. Once the user opens the notification you can perform some action, based on the data sent with the notification.
A good React Native component for push notifications is React Native Push Notification, which offers cross-platform notifications. Once you have this implemented you can create a handler which calls your API when the app is opened from a notification.

How are Android GCM push notifications processed?

I am working on a Cordova Android app that handles push notifications using the PushPlugin. The app will correctly receive push notifications when the app is open. However no push notifications are received (or at least handled) if the app is not open.
This makes some sense given that the plugin has code that specifically handles receiving push notifications. What does not make much sense to me is why this code even exists at all. Before building this app, I assumed that the OS had some sort of queuing system that received any/all notifications.
Does a notification queue exists in Android that handles push notifications for all apps or does each app need to handle the notifications on their own.
Can Android apps process push notifications while closed?
Can Cordova Android apps process push notifications while closed?
In Google Cloud Messaging (which is the push notifications mechanism used by the PushPlugin) each application decides how to handle the notification. When a push notification arrives to the device, GCM triggers a BroadcastReceiver in the recipient application, and the application is responsible for handling the notification data.
Android apps can process push notifications when closed unless they are explicitly stopped by the user (in which case no notifications will reach the app until it is restarted again by the user). If they leave the foreground by the user switching to another app or going to the home screen, the can still receive and process notifications.
Yes. According to the PushPlugin you posted a link to, it seems that they can. When the app is not in the foreground, the notification is handled differently - a notification is added to the notification bar, and when it is tapped, it should open the app.
With PushPlugin, when sending push notifications to GCM (for GCM to send them to the device) one has to include a msgcnt key value pair after the message key value pair in the payload value in the JSON message, like this:
{
"GCM":"{\"data\":{\"message\":\"hello\",\"msgcnt\":\"1\"}}"
}
or else PushPlugin will not handle the notification when the app is in the background. It has to do with the way the GCMIntentService.java file is written in the plugin.

Categories

Resources