It's the expected behavior to not launch the app. I mean why should it? The user for some reason has decided to kill the app. They don't want battery or bandwidth getting used for it anymore!
From documentation.
Use this method to process incoming remote notifications for your app.
Unlike the application(_:didReceiveRemoteNotification:) method, which
is called only when your app is running in the foreground, the system
calls this method when your app is running in the foreground or
background. In addition, if you enabled the remote notifications
background mode, the system launches your app (or wakes it from the suspended state) and puts it in the background state when a remote notification arrives. However, the system does not automatically launch your app if the user has force-quit it. In that situation, the user must relaunch your app or restart the device before the system attempts to launch your app automatically again
For non-silent notifications. They would get delivered to the device. But not to the app.
If you force-quite your Whatsapp on your iPhone and your mother sends you a message, then your iPhone would show it among its notifications. However it won't trigger any of your AppDelegate methods. AppDelegate methods are only triggered if the app is not user terminated.
content_available
astrue
and then also send alert, sound as well. if the app wasn't killed then since you were usingcontent_available
then it will open the app...and if the app was user-terminated then since you sent an alert the user will see the notification and can tap on it and open your app – DowncomePushKit
. Though you must have a valid usecase for it. Otherwise Apple may just not approve your app... – Downcome