One question that’s been raised a bunch of times here on DevForums relates to IPv6 address synthesis. I’ve just updated the Supporting IPv6-only Networks pinned post to offer formal guidance on this topic (see FAQ #4). However, I want to follow up with some personal opinions.
My main point is that, while the above-mentioned guidance means that you don’t have to worry about this issue during App Review, you still have to worry about customers running your app on a device running an older version of iOS that’s attached IPv6-only network. You have a bunch of options to handle that case:
use a DNS name — This is the best option, in that connecting to a DNS name solves this problem and helps in a bunch of other cases as well (for example, it’ll improve compatibility with VPN On Demand).
raise your deployment target to 9.2 — This is the simplest correct option, allowing you to avoid this issue without writing any code.
support IPv6 on your servers — If your change your servers to support IPv6, you’ll be able to connect to them using an IPv6 address or an IPv4 address depending on your environment.
detect and specifically handle NAT64 — It’s technically possible to implement your own address synthesis using the algorithm described in RFC 7050. However, we recommend against you doing this because
implementing this correctly involves a lot of ugly low-level networking code
that code will have a very limited lifespan; a year or two from now you’ll be able to safely assume iOS 9.2, at which point all of that effort will have been wasted
you can apply the ostrich algorithm — Personally I wouldn’t do this but, ultimately, you are responsible for your relationship with your customers.
Share and Enjoy
—
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"