iOS 10 VoIP background mode no longer supported?

I'm using VoIP background mode in our App, I'm now using iOS 10 developer beta with Xcode 8 beta, I found this print

after calling

- (BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void(^ __nullable)(void))keepAliveHandler


"Legacy VoIP background mode is deprecated and no longer supported"

I know this API is depricated since iOS 9, I want to make sure, does it mean this API will not work at all in iOS 10 and later?

Accepted Reply

In iOS 10, you should be using PushKit for handling push notifications for incoming VoIP calls. So when you build your app against the iOS 10 SDK, you need to move over to PushKit (which can be supported all the way back to iOS 8, but once you move to iOS 10 our recommendation is to update your minimum deployment target to iOS 9).

Replies

Thanks for answer.

I've submited enhancement request - 28709872

Just FYI, our official Q&A covering this has now been posted (QA1938 iOS 10 and the Legacy VoIP Architecture). If you’ve followed along with this thread carefully then you’ll find no new details in the Q&A; it exists to help out folks coming to the issue afresh.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

How can Apple do this?


We built a BUSINESS around this. Where was the warning that this background mode would go away? This is devastating.


Are we expected to move over to PushKit in 2 hours and update all our shipping apps for all our clients? Where was the fair warning that the rug would be pulled out from the VOIP background mode?


Holy ****.


I am in shock.

PushKit was announced with iOS 8 and Legacy VoIP background was deprecated with iOS 9. You had over a year of warning.

Are you actually making an excuse for this?


There is NOTHING in the actual Apple docs that I read about APNS that said that PushKit would remove and replace VOIP backgroiund mode or I would not have spent the time to put it in!

Up until 6 months ago, we still had iOS 7 as a requirement to support, so PushKit was exclused as an option.

Even in less critical areas, we get deprecation notices, NEVER a "shut off, you're done" for something so critical.

We got loads of warnings that TLS security was coming and we got a plist key to allow arbitrary downloads.

Look at how many people are caught by surprise with this. No grace period, no warning, nothing.

This is utterly horrible.

No, I'm not making excuses, I'm telling you that Apple documented the deprecation over a year ago in setKeepAliveTimeout(_:handler:):


Configures a periodic handler for VoIP apps in older versions of iOS.

...


Discussion


In iOS 8 and later, voice-over-IP (VoIP) apps register for

registerForRemoteNotifications()
remote notifications instead of using this method. Using remote notifications eliminates the need for a timeout handler to check in with the VoIP service. Instead, when a calls arrives for the user, the VoIP service sends a VoIP remote notification to the user’s device. Upon receiving this notification, the device launches or wakes the app as needed so that it can handle the incoming call.

A word of advice: when you are posting a technical note that appears to spell doom for the apps of several of the people on the thread, finishing with the tag line "share and enjoy" looks more like a kick in the teeth than anything else.


"Share and Enjoy" is, of course, the motto of the Complaints Division of the Sirius Cybernetics Corporation, a corporate behomoth that covers the major landmasses of three planets (that's just the complaints division, not the whole SCC) in the Hitch Hiker's Guide to the Galaxy. The marketing division of the Sirius Cybernetics Corporation is defined as "a bunch of mindless jerks who'll be the first against the wall when the revolution comes".


Douglas Adams created the Sirius Cybernetics Corporation as a satire on huge bureauratic marketing droid driven corporations such as (at the time) IBM and Xerox and that you probably don't want Apple to be included with, although it might be too late.

I want to add my voice to the issue.


The company I work for offers a closed network VOIP solution that we can no longer offer an iOS application to pair with it. This is due to the limitations of PushKit and requiring connection to a PNS. Our only option is to create an in-house PNS which is unrealistic at this time.


I do not understand why "Legacy VoIP Background Mode" cannot be supported in addition to PushKit. PushKit is obviously better in most cases but does not offer all the same functionality as the legacy VoIP code did. Therefore both have merits to existing alongside each other. I hate to push customers to Android because they offer functionality Apple does not.

There are still Apps out there like Zoiper which supports SIP TCP connections. Do they exist because they were released before IOS 10?


Fact is that the standard SIP protocol does not include Push Notifications, and thus IOS does not support the most commonj used VoIP protocol.


And even if SIP is extended, according to this post, the push credentials would need to be exposed to the world.

https://community.zoiper.com/1896/configure-push-notification-for-iphone-new-version-coming?show=1896

Part of the reason why SIP protocol was so sucessful was because it was a standard and cisco was forced to use it as part of a tanberg take over...


I would appeal to Apple developers to create a API to allow a app access to a SIP client that works without acess to the internet otherwise gov and enterprise might have problems that involve lawyers and we can all do without that...

(other platforms allow access to a SIP core via an API )


Since VoLTE requires a SIP client the code is there and all Apple has to do is allow API access

Intresting that other apple apps use this API to work with sensors in the background so this issue will be intresting in iOS 11


Please help allow SIP without internet access.


Regards


John Jones

Similar scenario as others, albeit without VOIP.

We have an integrated alarm monitoring system for vessels, where alarm notifications are distributed to the on-duty engineers personal iOS devices.

When the vessel is moored and there is internet connectivity no problem, pushkit is great.

When the vessel is cruising there is no connection to the Internet (satellite is really expensive), so now the app opens a direct socket to the on-board IAMS server: this will not work in the future.

We need to tell our customers that they need to carry another device to get the alarms notifications, because iOS 10 cannot do that. Possible alternatives: Android, DECT phones, walkie talkies...

I find this stance by Apple astonishing. Our company is on the brink of losing massive lucrative contracts in the maritime industry, whereby the nature of the apps running on ships whilst at sea are highly unlikely to be granted (or able) to maintain persistent internet connectivity. In some cases, this includes the ability to generate emergency calls (or messaging) to relevant parties equipped with iOS devices, which has now become a virtual impossibility.


I cannot comprehend why Apple don't have a provision to allow for vetted organisations/apps to maintain background services, even if only for VoIP related technologies.


An oversight of huge proportions!

If the contracts are so lucrative, why not deploy an LTE solution shipboard? It would offer voice and SMS without the need of any VoIP apps or particular mobile devices.

… whereby the nature of the apps running on ships whilst at sea are highly unlikely to be granted (or able) to maintain persistent internet connectivity.

I have a colleague who has been tracking cases like this; I recommend that you open a DTS tech support incident and discuss the details with him.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"