Until iOS 8, VoIP apps could start in the background automatically after booting. This required the app to include the voip
value in the UIBackgroundModes
key, as described here. iOS 8 replaced this system with PushKit, an architecture that used Push Notifications from Apple’s Push Notifications service (APNs) to inform the app of an incoming call. With this system there was no need for the VoIP app to start automatically so this functionality was removed. The legacy API remained available until the iOS 9 SDK, where it was officially deprecated, as stated in Apple’s documentation. It was available in iOS 10 as a compatibility measure, assuming applications were built using an older SDK, but not included in the iOS 10 SDK. There is a notice on that documentation page, however, that says it is possible to apply for an exception to continue using the legacy system on iOS 10 and later. Does this mean it is possible, in theory, to use the legacy system on iOS 11-14?
As some additional information, iOS 13 changed VoIP so that PushKit call notifications had to be handled by CallKit or iOS would refuse to deliver future PushKit notifications. This can be bypassed with the com.apple.developer.pushkit.unrestricted-voip
entitlement, as seen here. Cisco has documented problems due to this. In the same document it says that support for the legacy VoIP APIs are no longer supported in Cisco Jabber from August 2020, but this seems like a development choice rather than being due to Apple.
My main reason for wanting to use the legacy architecture is to be able to start an app automatically at boot. Not having to register with APNs is also a benefit.