neutrino38 warns that iOS 10 includes a significant change “overlooked by the general public”: It deprecates an API that is crucial for VoIP and other instant messaging applications that enable keeping one socket active despite the fact that the application would run in the background. As a replacement, developers need to use PushKit: when an incoming call is to be forwarded to an iOS VoIP client, the VoIP infrastructure needs to:

– withold the call – contact Apple push infrastructure using a proprietary protocol to wake up the client app remotely – wait for the application to reconnect to the infrastructure and release the call when it is ready

This “I know better than you” approach is meant to further optimize battery life on iOS devices by avoiding the use of resources by apps running in background. It has also the positive effect of forcing developers to switch to a push model and remove all periodic pollings that ultimately use mobile data and clog the Internet. However, the decision to use an Apple infrastructure has many consequences for VoIP providers:

– the reliability of serving incoming calls is directly bound to Apple service – Apple may revoke the PushKit certificate. It thus has life and death decision power over third-party communication infrastructures – organizations wanting to setup IPBX and use iOS client have no option but to open access for the push services of Apple in their firewall – It is not possible to have iOS VoIP or communication clients in network disconnected from the Internet – Pure standard SIP clients are now broken on iOS

The original submission argues that Apple is creating “the perfect walled garden,” adding that “Ironically, the only VoIP ‘app’ that is not affected is the (future?) VoLTE client that will be added to iOS one day.”