Update 11/05/2016: the original message in this article was wrong, please read the updates below.
Some pretty big news for the adoption of IPv6 today from Apple for the iOS platform (iPhone, iPad and I’m guessing Apple Watch too).
At WWDC 2015 we announced the transition to IPv6-only network services in iOS 9. Starting June 1, 2016 all apps submitted to the App Store must support IPv6-only networking. Most apps will not require any changes because IPv6 is already supported by NSURLSession and CFNetwork APIs.
If your app uses IPv4-specific APIs or hard-coded IP addresses, you will need to make some changes. Learn how to ensure compatibility by reading Supporting IPv6 DNS64/NAT64 Networks and watch Your App and Next Generation Networks.
If your app still uses IPv4 endpoints (API’s etc.), those will most likely have to be modified to also support IPv6. As of June 1st 2016, it looks like iOS apps will only prefer to make IPv6 DNS requests and will eventually stop query’ing for IPv4 records for NSURLSession
calls.
There’s a bit of speculation going on here, as the news from Apple was very low on details.
However, “supporting an IPv6-only network” sure sounds like it’ll be IPv6-only, without support for IPv4 inside your iOS Apps. For WiFi or 3G/4G/LTE connections, I’m pretty sure they won’t be dropping IPv4 support any time soon, this only reflects your Swift/iOS code.
Apple has been giving IPv6 a 25ms timing benefit in requests over IPv4 for a while now, preparing their IPv6-only move.
Update 6/5/2016
Some good & bad news: I got some of the details wrong (that’s the bad news), but the good news is there’s still a very active push for IPv6 by Apple: your applications need to be ready to go IPv6-only. That means your remote endpoints need to support both IPv4 and IPv6. But it doesn’t look like Apple will disable IPv4 entirely, they’re just adding all the capabilities and support to be able to make that switch in a couple of months/years.
The crucial bits in Apple’s announcement are in the sentence “Starting June 1, 2016 all apps submitted to the App Store must support IPv6-only networking.". They “must support IPv6-only networking", so adding support for it in your application is sufficient.
Update 11/05/2015
I should’ve read more about this: Supporting IPv6 DNS64/NAT64 Networks.
IPv6 and App Store Requirements
Compatibility with IPv6 DNS64/NAT64 networks will be an App Store submission requirement, so it is essential that apps ensure compatibility. The good news is that the majority of apps are already IPv6-compatible. For these apps, it’s still important to regularly test your app to watch for regressions. Apps that aren’t IPv6-compatible may encounter problems when operating on DNS64/NAT64 networks. Fortunately, it’s usually fairly simple to resolve these issues, as discussed throughout this chapter.
So: you don’t need to have IPv6 support on all your servers, you just need to make all your network calls using a high-level network framework like NSUrlSession, NSUrlRequest, Cocoa, … so that they can transparently query for IPv4/IPv6 records.
I was wrong.