Keeping the app stay connected to TCP server even if it is in background

Hello,

We have an iOS application (navigation/mobility app) that we need to have it stay connected to TCP server even app is in background.

We tried disabling screen lock. We tried having location permission as "always". But it is not consistent. Usually, after 15 minutes, TCP connection is disconnected. We are unable to run code on app's side if it is in the background.

Our other workaround option is similar to WhatsApp or what every other companies / our rivals in the market do. Have a VOIP feature, use voip notification to wake up the app. But we really don't want to do that sort of thing.

Any feedback and any ideas are welcomed.

Thanks.