React Native OneSignal accessing push notification that initiated app start - ios

I'm using OneSignal in my React Native iOS app and I need to access whether app was started from push notification, and if yes, I need the push payload.
I haven't seen anything in OneSignal docs. Here is my code (called immediately at app constructor):
OneSignal.init('UID_REDACTED');
OneSignal.addEventListener('ids', onIds);
OneSignal.addEventListener('received', didReceiveNotification);
OneSignal.inFocusDisplaying(2) //0: none, 1: alert, 2: notif
OneSignal.configure(); // triggers the ids event
onIds function is triggered just fine, didReceiveNotification also works perfectly if the app is already running. If the app is started from tapping a push notification, this is not called. I need to handle that case as I need to deep link the push payload to actions.
How can I handle push notifications that caused app start in React Native with OneSignal.

Thanks for your question. It sounds like you're looking for opened...
onOpened(openResult) {
console.log('Message: ', openResult.notification.payload.body);
console.log('Data: ', openResult.notification.payload.additionalData);
console.log('isActive: ', openResult.notification.isAppInFocus);
console.log('openResult: ', openResult);
}
Link: https://documentation.onesignal.com/docs/react-native-sdk#section-handling-notifications

Related

Modify Notification data before displaying to user in iOS

I have an app in which I am using an FCM notification when there is an event from server.
I want to get the notification data and update the message from one of the parameter from Notification Payload when app is in background, foreground or killed.
I have tried to use Silent Push Notification with Content Available but when my app is killed, then I am unable to receive callback in my App delegate.
I have tried lots of links from StackOverflow but could not get the perfect suggestion.
If you find duplicate, then please provide me the link but solution with different iOS (12,13,14,15) versions.
My problem is just like this Stack Link
It sounds like what you want is a Notification Service Extension. This is a separate binary (packaged with your app) that can run when a notification is received. Your extension can intercept the push-notification payload, and modify it, so that other things can be displayed.
https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension
This is also really good, too.
https://www.raywenderlich.com/8277640-push-notifications-tutorial-for-ios-rich-push-notifications

VoIP notifications in hybrid apps not working

Recently Apple changed its way of handling VoIP notifications. Now they force you to use CallKit in the same run loop in order not to throw your notification away. The trace I get is this one
Apps receving VoIP pushes must post an incoming call (via CallKit or IncomingCallNotifications) in the same run loop as pushRegistry:didReceiveIncomingPushWithPayload:forType:[withCompletionHandler:] without delay.
When you get this warning three times, the system is "dropping your notifications on the floor".
The problem here is that I'm developing a hybrid VoIP app using the phonegap-plugin-push, and I'm afraid that the on notification event is not fast enough (or at least not the same run loop) for iOS.
Did anyone face this issue?
I've thought of changing to regular push notifications, but I can't find a way to make my app relaunch when it's killed and execute some code (launch CallKit, for example).
Edit:
I'm trying this approach with push notifications and I already configured the background modes. I noticed that sending the "content-available" and some data, like "badge", or "alert" in the notification, the app is launched if it went to background recently. After 15 minutes in the background the push notification arrives but the app doesn't launch anymore
Thank you in advance.
Our app uses CallKit and push notifications, and it launches when a push notification arrives for a new incoming call. It has to be configured in the project build and run once to register with iOS for this, though.
I found a solution:
Since iOS changed its policy about handling voip push notifications, it forces you to report a new incoming call when receiving the voip: https://forums.developer.apple.com/thread/117939
This plugin does it: https://github.com/mattkhaw/cordova-plugin-callkit
It merges two plugins (WebsiteBeaver/CordovaCall and Hitman666/cordova-ios-voip-push). It worked for me. I just had to remove the receiveCall from the javascript and tweak a little bit the plugin.
The methods related to the voip notifications register are in the cordovaCall class, so it is pretty straightforward to work with.

Callback function for push notifications while app is killed (titanium iOS)

I cant find a clear answer about this in the Titanium documentation. Is it possible to directly respond to a push notification while the app is killed ?
I know that the callback is called when you open the app trough the push notification. but is there a way to respond when the app is opened manually ?
I tried to use remote-notification as UIBackgroundModes, but this only helps for paused apps.
My goal is to show the push notification in a in-app message center.
You should never rely on push notifications to deliver you payloads, they are too limited for that. If the user receives 5 push notifications and opens the app via the app icon, you will never receive any of the payloads. If he opens the app via one of those notifications you will only receive that payload.
You could use silentpush:
http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Background_Services-section-37539664_iOSBackgroundServices-SilentPush
But the app should always query a back-end to get the actual data. That's how WhatsApp does it as well, as you can see when you open it via a notification it will then still fetch the message(s) form the server.

Process received apple push notification in monotouch

Is there a way to show or list Apple push notifications on any user page?
It's pretty hard to find where is the alert message is received.
Here is the Xamarin doc for Remote Notifications: http://docs.xamarin.com/guides/cross-platform/application_fundamentals/notifications/ios/remote_notifications_in_ios/.
iOS handles the push notification for you, your app is only informed of a push notification if you app is running in the foreground or when the user clicks on the notification and you app is opened.
With the iOS SDK there is no way to get a list of notifications for you app, the best way to create this is by keep a list server side.
Have a look at MonoTouch.UIKit.UIApplicationDelegate.ReceivedRemoteNotification Method

How to start an iOS push notification from an in-app process

I'm building an app that plugs into a third-party service that will send messages to the iOS device. So far I've been unable to find any documentation on then starting off a push notification when the delegate method is fired to say that a new message has been received.
So far, I've got the app registering to receive push notifications and the delegate method firing, I'm just not sure how to connect the two together?
The app will have a minimum deployment of iOS 5.1 if that helps.
This is not how remote notifications work. Their main purpose is to notify application about some event. So application only receives remote notifications and note send them. So scenario is:
App is notified via
application:didReceiveRemoteNotification: //if running
or
application:didFinishLaunchingWithOptions: //if closed
According to notification payload you determine what exact action you need to perform. For example notification says that a new message was sent to the user. Then you need to send your custom request to the your server and get that new message.
I've discovered that in this case it is not push notifications that I want but local notifications instead.

Resources