IPv6 Compatibility Required - Apple Disapproved iOS Application

enter image description here

after June 1st, I will send my ionic app to itunes connect, and I received a message from apple.

Applications are viewed on an IPv6 network. Make sure your application supports IPv6 networks , as IPv6 compatibility is required .

For information on IPv6 network support, see IPv6 DNS64 / NAT64 Network Support.

For a network overview, see the About Network section.

I used the AFNetworking call for the API.

Please help find a solution for the same.

Thank.

+30
ios itunesconnect ipv6
Jun 08 '16 at 4:27
source share
3 answers

I'm actually calling the API using the AFNetworking Library.

I just replaced the AFNetworkReachabilityManager classes from Github with my existing classes. And the apple has no more problems.

Now my application is working.

+6
Jun 10 '16 at 6:03
source share

If you are using IPv4-specific APIs or hard-coded IP addresses, you will need to update your code. Although all NSURLSession and CFNetwork APIs (including NSURLConnection) already support IPV6

As Apple mentioned:

At WWDC 2015, we announced the transition to IPv6-only network services in iOS 9. From June 1, 2016, all applications presented in the App Store should only support IPv6-network. Most applications do not require any changes, since IPv6 is already supported by NSURLSession and the CFNetwork API.

If your application uses IPv4-specific APIs or hard-coded IP addresses, you will need to make some changes.

Though. Apple also recommends not using IP literals for long term (optional)

Do not use IP address literals

Make sure that you do not pass IPv4 address literals in dotted API notations such as getaddrinfo and SCNetworkReachabilityCreateWithName. Instead, use high-level network structures and an agnostic version of the API, such as getaddrinfo and getnameinfo, and pass their host names or fully registered domain names (FQDNs). See the Getaddrinfo (3) Mac OS X Developer Tools Guide and the getnameinfo (3) Mac OS X Developer Tools Page.

Note. In iOS 9 and OS X 10.11 and later, NSURLSession and CFNetwork automatically synthesize IPv6 addresses from IPv4 literals locally on devices running on DNS64 / NAT64 networks. However, you should still work to rid your code of IP addresses

If you use the AFNetworking library, be sure to upgrade it to a version higher than 3.x, as they seem to have updated some things a bit. β†’ AFNetworking Added IPv6 support to reachability.

For more information, please follow this link.

IPv6 only network support

ALSO FOR TESTING

You can follow this detailed guide:

tutorial-how-to-test-your-app-for-ipv6-compatibility

+19
Jun 08 '16 at 4:53 on
source share

Solution for rejecting Apple apps due to IPv6 network

Checking Internet availability for IPv6 does not work. Always shows a lack of network. When I use this code, Apple approved my application within 24 hours. THANKS

Change the following line in the AFNetworking code in the AFNetworkReachabilityManager class

EDIT AF_INET TO AF_INET6;

+ (instancetype)sharedManager { static AFNetworkReachabilityManager *_sharedManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ struct sockaddr_in address; bzero(&address, sizeof(address)); address.sin_len = sizeof(address); address.sin_family = AF_INET6; //Change AF_INET TO AF_INET6 _sharedManager = [self managerForAddress:&address]; }); return _sharedManager; } 

EDIT:

 $ grep -nr 'AF_INET*' . ./Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m:122: address.sin_family = AF_INET; replace AF_INET; to AF_INET6; 
+11
Jul 05 '16 at 6:13
source share



All Articles