We've used to be able to send content-available=1 silent push messages in a reliable way to an app to trigger functionality while the app was running. Since iOS 13 this has become a big problem becuase of this new statement: "The number of background notifications allowed by the system depends on current conditions, but don’t try to send more than two or three per hour."(https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app?language=objc). According to my tests, you simply cannot rely on background messages being delivered to the app (even with apns-priority and apns-push-type all correctly set according to the docs).
One very ugly way to work around this is to send apns-push-type=alert type messages with no visible content and with a sound that points to a 0 byte audiofile. Certainly not a sustainable way to solve the problem.
Is there any way to send a message to an app in a reliable way other than to implement a permanently open socket by yourself?