iOS 10 Quietly Deprecated A Crucial API For VoIP and Communication Apps (apple.com)
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."
- 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."
I think the real joke here is that for a price of one of their phones you could instead have 2 kilos of pure silver.
It provides defense against lazy app writers. And it's courageous.
Apple deprecated the old VoIP interface one year ago. Absolutely obvious for anyone interested. But one year warning will obviously come as a surprise to some people.
VoIP required that your phone was turned on, your app was running, and regularly pulled requests. An absolute battery eater. The new feature allows your phone to be asleep, use no energy, and wake up immediately when a call arrives.
the carrier don't like what was disabled. Now you can't use an iPhone handset to bypass the carrier using VOIP
Please explain this, since your comment means that one of us doesn't have a clue what he is talking about.
I'm looking at you facebook; what are the chances they were abusing the old API. It sounds like a right pain in the ass from a development point of view. Maybe though with this there could be a way from phone calls interrupting my skype calls. That would be a huge win.
Because data miraculously teleports to the iPhone.
(If you want to claim you only ever use your phone with WiFi, first I don't believe you and second you are moot to carriers since you were already unwilling to be a customer.)
Now the next iPhone can be even thinner! I can't wait to call 911 and tell them I accidently cut myself with my new razor thin iPhone 12! -_-
Anons need not reply. Questions end with a question mark.
Pushing people to do things 'the right way' is preventing iPhone to turn into Android. This is ONLY targeting lazy developers that haven't updated their app in YEARS (this way of doing it has been possible since 2009 and PushKit as an alternative to polling announced and available since mid-2014).
I'm very glad that VoIP apps don't eat all my battery because they have to poll a service every 5s. Many VoIP apps were simply garbage before iOS 3 and still are on Android, we complain about charging an iPhone once every 2 or 3 days, I had to charge twice a day when I had a particular IM app on an old iDevice, even a current Android I own, doesn't last more than a day when some VoIP/IM apps are open.
Custom electronics and digital signage for your business: www.evcircuits.com
Why would the carrier even CARE anymore? Actual voice calls are NOW almost more trouble & taxes than they're worth.
Data, on the other hand, is their new big-ticket billable item... they LOVE apps that constantly poll for data, because a single-byte payload in a TCP/IP request generates a few hundred billable bytes of data transfer. Carriers would abandon voice & MAKE you find your own VoIP service if they thought they could get away with it. Voice calls are now just a loss-leader to sell data.
With someone like AT&T, T-mobile, Verizon, or Sprint (where voice calls are free), they LOSE money (in state & federal taxes) every time someone makes a voice call. If you use some other VoIP service, it's win-win for the telco.
Apple has let developers know that this change was coming for about a year and a half now. We develop a VoIP application and have been making changes well in advance of Apple fully deprecating the older socket mechanism. It does have the downside of giving Apple more control but Apple already has full control over whether you can publish to the App Store, how your UI should look (within reason based on guidelines), not duplicating system functionality, etc. However if this improves battery life and creates applications that are designed in a better fashion then it is positive change.
Unlimited and free are not the same thing.
I'm not doubting you, but do you have any sort of citation for that statement?
You are welcome on my lawn.
Apple maintains full control over iPhones. It's not meant to be a computer-like device. Background apps have always been kept on a very short leash. An iPhone is a limited device that only does what Apple allows you to do. If you want a phone that is more like a computer, get an Android.
In many ways carriers are becoming a dumb pipe and the evolution of their plans suggest that they are realising this. In many ways charging for data is of more value than charging for voice, if everyone is moving to third party apps.
The value of keeping a phone number with your carrier is that it is still the closest to an universal contact ID, working across carriers. The same can't be said for solutions such as WhatsApp, Skype, Facebook and Google Hangouts.
Jumpstart the tartan drive.
will this allow Apple, and as is always the case, any U.S. government agencies to get more insight or even subvert the use of secure communication apps?
They ARE doing the right thing on Android. The only ones doing something wrong is Apple.
There is no reason that listening on a socket needs to use ANY battery at all. It WOULD be wise to have a model for checking whether a packet is DoS/dealing with heartbearts before causing it to fire up the real app process, but given that, there is no reason why SIP can't be efficient. If the reasoning for this has anything to do with battery, then it's lazy.
Apple deprecated the old VoIP interface one year ago. Absolutely obvious for anyone interested. But one year warning will obviously come as a surprise to some people. VoIP required that your phone was turned on, your app was running, and regularly pulled requests. An absolute battery eater. The new feature allows your phone to be asleep, use no energy, and wake up immediately when a call arrives.
Thanks for explaining this. I was curious about how that would affect Vonage Extensions, a VOIP app that I use. If the app still uses the old API, whether it would stop working. Same question for WhatsApp. I know that FaceTime audio is an option, but wouldn't work w/ non iPhones.
So how can the operator of a local area network disconnected from the Internet run a private PushKit server?
I can't quote a URL, but I used to work for a major telco & had a role in writing our billing software. Circa 2009, it cost *us* (in taxes and Tariff-mandated fees) more to terminate a landline call from Fort Lauderdale to Boca Raton than it cost for us to terminate a call from a landline phone in Fort Lauderdale to a landline phone in BRITAIN --
because intra-LATA calls (a/k/a "local long-distance" calls) were among the most expensive ones you could make, while international calls actually had the least taxes.
Yeah, that would make sense if practically every single mobile plan sold today didn't include unlimited call minutes, but limited data. The carriers would much rather the call be VoIP - they stand to make more money from packetized data than voice.
What is the weather like 10 years ago?
Slashdot still doesnâ(TM)t support Unicode after it was added to the HTML standard in 1997.
When so many plans are "unlimited calls and texts, some GB of data and if you go over you pay", calls are effectively free once you've paid your monthly base rate. You could spend the entire month on the phone 24/7 and not pay a cent more than if you never make a voice call. But for the carrier, each call consumes resources on their network, and if too many people make calls they have to upgrade their network or quickly gain a reputation for dropped calls. Therefore, a carrier would prefer if you pay for unlimited calls and then not make any.
Data also consumes resources on the carrier's network, and I would guess it's more of a strain on the network than voice. Voice gets routed once at the start of a call and again if you handoff to another tower, and is a constant rate throughout the call. Data is routed per packet, and is very bursty. But it counts against a limit set in your plan, so your carrier would like you to use a lot of it because then they can charge you more.
Then again, some carriers are starting to offer truly unlimited plans where you never pay extra and they just put you in a lower priority bracket if you use excessive amounts of data.
You could proxy it. It uses HTTP/2 so it can be proxied without requiring any SSL-shenanigans but otherwise that is the simplest method.
Alternatively, the push notification protocol is open, well documented and very simple (JSON back and forth), people have made some reference implementations although most simply rely on the Apple infrastructure. Various commercial MDM have the feature although it's too bothersome for most people to set up so it's generally poorly documented since it's only useful for apps you can import and sign certificates for which would only be available in your own company 'app store'. But it boils down to including the various certificates for your custom implementation, importing them into the phone using a profile (which the user would have to accept). Then your app (and your app only) can talk to 'your' servers instead of Apple's.
Custom electronics and digital signage for your business: www.evcircuits.com
Make the damn phone 1mm thicker and put a bigger battery in it. Apple are determined to offer the smallest battery capacity they can get away with. Courage?
Apple phones are safer than Galaxy Notes because even if the battery does catch fire, it will be a tiny fire that rapidly fizzles out.
That is actually a valid concern, a company which handles their internal communications through VOIP and a PBX are now reliant on Apple. I trust in avarice though, the risk of harming their brand represents far more money than the peanuts they could pick up with fucking around with the metadata. They make their money selling hardware, not their customers.
By getting all the push messages into the same paging cycle of the mobile data network you can save a bit of energy and they can track apps which are programmed by morons and push too much shit. That's almost certainly the reason they are doing it.
I know you just meant this as a troll but you picked the wrong topic.
If you've been following android, you would know that Android N and O added much the same restrictions as iOS (with regard to apps running in the background or while the phone is dozing)
And, perhaps more importantly, most SIP providers have endpoints in many countries and so the call costs are fairly uniform. It costs me about the same amount to call the UK or USA from my SIP client, but a lot more to call the US as a telephone call from the same phone. I mostly use SIP for international calls - it's a lot cheaper than using POTS.
I am TheRaven on Soylent News
"Free", which is what my carrier charges for voice calls, is pretty damn cheap.
Carriers want you to use your expensive data plan. This change reduces how much data you use. So it's actually bad for the cellular providers, since you're making more free calls and using less metered data.