writes: iOS 10 has been released in september 2016. It contains a technical change that has been overlooked by the general public.
It deprecates an API that is crutial for VoIP and other instant messaging applications
that enable to keep one socket active despite of the fact that the application would run in background.
As replacement, developpers needs to use the 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 ment 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 to force developpers to switch to 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:
- in order to serve iOS app, those infrastructure will need to be tied with Apple service so the reliability of serving incoming calls is directly bound to Apple service.
- Apple may revoke the PushKit certificate. It has then life and death decision power over third party communication infrastructures.
- organisation 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 client in network disconnected from the Internet.
- Pure standard SIP client are now broken on iOS
This is the perfect walled garden. Ironically, the only VoIP "app" that is not affected is the (future ?) VoLTE client that will be added to iOS one day.May be the day of over the top communication services are numbered on iOS.