I'm using react-native and onesignal to handle notification.
If you press the notification when the app is in the background, i'll catch the 'opened' event, and redirect to the correct route (in the notification metadata)
But when the app is closed, the click on the notification just opens the app, without firing the 'opened' event.
How can i fetch the initial pressed notification metadata ?
Thanks
If you are using RNFirebase Cloud Messaging, you can use the proper listener getInitialNotification where you can catch when the notification is opened while the app is closed. Follow that guide Notifications - Handling Interaction for more infos.
Related
I am using react-native-notifications. I am getting push notifications perfectly but the issue is when the app is in the foreground and received push notifications. I clicked on the notification, the app reloads instead of resuming and the app is in the foreground all this time. It happens for every single push notification.
The event handler on click of push notification is being called and app reloads. I am just doing console in the handler.
Notifications.events().registerNotificationOpened()
Tried singleTop, singleTask, or singleInstance in manifest file. no luck
I have integrated OneSignal in ReactNative, now i am able to send and receive notifications. But after once notification is received into the mobile, then and there itself from the notification tray if user clears the notification without clicking it. Do we have any option to get all un-read notifications either with player_id and app_id
Looks like we can read the messages once we click on the notification which re-directs to the application.
I expect onesignal notifications should to able to retrieve the list of un-read notification using react-native sdk.
Can Someone help me with your ideas
Thanks.
I read
How to handle notification when app in background in Firebase
Open app on firebase notification received (FCM)
But these aren't the solution for react-native-firebase.
I'm using react-native-firebase to handle notifications. In foreground, everything works well. I stuck with background state.
I'm working on a chat project and making 1-to-1 call feature. I push data-notification to clients when they have a call. In iOS, I used CallKit when client received notification, and it worked fine. But in Android I have a problem:
I can show ConnectionService UI for a call, but can't connect to my web socket server because it runs on Headless JS service. So I tried to auto open the app. I want to show a call screen as Skype, and accept/deny the call. (Skype can launch the app when I have a call)
Summary, successful steps:
Receive call notification in foreground state and show calling screen.
Receive call notification in background/closed state and show calling screen on iOS.
Receive call notification in background/closed state on Android.
Stuck here:
Show calling screen in background/closed on Android ???
TL;DR - How to launch/run/open Android app from Headless JS Service?
I dig into react-native-firebase, it catches the notification on onMessageReceived and send notification message to Headless JS Service.
// If the app is in the background we send it to the Headless JS Service
Intent headlessIntent = new Intent(
this.getApplicationContext(),
RNFirebaseBackgroundMessagingService.class
);
headlessIntent.putExtra("message", message);
this
.getApplicationContext()
.startService(headlessIntent);
HeadlessJsTaskService.acquireWakeLockNow(this.getApplicationContext());
Any help would be appreciated
This library is helpful to open app from background state.
React Native Launch Application
If your app is quit from background state
you've to register registerHeadlessTask in index.js like this
AppRegistry.registerHeadlessTask(
'ReactNativeFirebaseMessagingHeadlessTask',
() => notificationActionHandler,
);
and in notificationActionHandler function call libraries function to open app
If your app is in background you can subscribe this
messaging().setBackgroundMessageHandler(remoteMessage => {
console.log('setBackgroundMessageHandler', remoteMessage.data);
})
Our React Native app needs to send out push notification to a number of people (iOS and Android, app can be open, backgrounded, or closed), and when just one of these people performs a specific in-app action, we need our server to erase these push notifications from everyone's phones (again from either open, backgrounded, or closed). Is this possible to do for both iOS and Android?
You can send background notification (data notification if firebase) and implement frontend listeners to cancel all notifications received so far.
We have push notifications working successfully. Backend event source is a Worklight adapter written in JS using the 'WL.Server.createDefaultNotification' and 'WL.Server.notifyAllDevices' API calls to send unicast notifications. In the front-end, the app is registered for push notification call back using 'WL.Client.Push.registerEventSourceCallback' JS API.
These particular scenarios are not working:
App is open in the background after login. Notification message is received, but user does not tap notification banner message - and instead just opens app by touching app icon. Notification callback method is not called - and subsequently payload from the backend is not available for the method.
App is open in the background after login. Notification message is received which only has iOS badge change and payload but no notification message for the banner or lock screen. In which case user has nothing to tap on. When user opens the app again - notification callback is not called.
Knowledgecenter documentation seems to indicate that the callback method should be getting invoked even if the app is running in the background. This is with Worklight 6.2.0.1.
Push is indeed supposed to work as you've describe. This is a bug.
This is no manual workaround for this.
If you are an IBM customer or Business Partner you will need to open a PMR (support ticket).