IPv6 issue application Rejected many times - ios

Our update has been rejected many times for ipv6 network connectivity issues. Our networking code has not changed between the previous release and this current release.
once i have just changed the testing credential which we gives apple for testing purpose and my application goes live.so now i am very much fed up with the things.because sometime apple accept and sometime its rejected.but he give the same reason due to ipv6 compatibility issue.
i have refer the apple documentation as well.any one can help me for this..
i have also search lots op link of stack overflow.
thanks in advance.

I have faced similar issue previously.
Steps you need to take care:
No IP Address should be hard coded.
Example: let api = 54.32.55.88 is invalid, use let api = www.mydomain.com
If you are using any Pods make sure they are compatible with IPv6.
Update the Reachability if you are using older.
Check your server configuration if its configured properly. Removing the AAAA if not valid for your configuration
If using AWS, AWS doesn't support IPv6, nor IPv6-only DNS through Route53.
Check some other solutions here.

Yes. I too faced this issue before many times. Apple is now supporting only apps those are compatible with IPv6.
First I tested my application as per their description. I tested on IPv6 but I didn't get any error as they said. So first complete debugging after connecting to IPv6. If you feel, it's working fine then do this.
I found out the IPVersion of my network through different websites. I took screenshots of the network I connected to on mobile and sent those screen shots to apple for review(saying it's a proof of connecting to IPv6).
Here below are the couple of sites that help you in finding out which version you are using.
Test IPv6
Google IPv6 test
Now it's accepted

As of June 1st 2016, all apps submitted to apple must be ipv6 compatible.
Here is the link for the announcement.
Now this comes with a lot of caveat. Basically this would take time to implement and apple started rejecting apps since September end. Now new apps that was being submitted was caught first, but now slowly apple is checking for ipv6 compatibility in old apps that owners are updating too.
Basically what apple tests is they connect their test device into a ipv6 network(their ISP broadcasts ipv6 connectivity), now if your app has a backend server, it should support any device that hits that server with ipv6 connectivity.
You can check whether your backend server is ipv6 compatible from here. Just paste your backend URL in the following and you will be able to see if your backend supports any ping from an ipv6 network.
If it doesn't then you have to make your server ipv6 reachable.

same issue was for me, if you are using Network Reachability class then update it from apple doc here.
Now my app is live with this fix.

I had same type of problem. I made an app which has a screen which only comes when a notification come so they(Apple team) could not able to check my app and giving me IPv6 issue then i told him about my app briefly that how my app works. So point only that tell him(apple team) about your app your problem can be solve.

Related

iOS App Rejected Because of IPv6 Compatibility Issue

We have a mobile app on iOS (using Swift 2.3) that was submitted since October and in the stores ever since, recently (1 month ago) the app got rejected by Apple reviewer due to the fact that content is not loading when connected to an IPv6 network, they advise you to test it by connecting the app to an IPv6 network, and they have the documentation on how to set it up, which we did and when we connected the app to it the content are loading with slight delay (max 2.5 seconds).
Of course our back-end is on IPv4 network, but as even Apple states that should be no problem since the NAT64 translation happens.
We tried to talk to Apple to get more details but unfortunately its out of their process so they cant help us further.
Some of what we did is:
Monitored all traffic from mobile to back-end if any call happens
using an IPv4 address and not the DNS (because it will fail for an
IPv6), and all good, all goes out with the DNS name.
Checked the libraries used if there is a chance they are not
supporting IPv6 and nothing came up the list, all good.
We looked into the internet and we couldn't find a factor that might affect Apple's test, its working at our end on an IPv6 network but not at Apple's, we are trying to reproduce the issue with no luck, any information on this topic will be really really helpful as we have to submit the app to the store.
I have got rejections that read like this and the first time it scared me a lot just the trouble I'd have to go through to test it out, but in truth, they were only saying a screen didn't load for seemingly connectivity reasons. The screen wouldn't load on IPV4 either, but seems they didn't bother to test that much, and the bug was a very silly logic bug not related to IPV6 at all. Another time our prod server was busted at the exact time they tested. Try to figure out if that is not your case too before you get into specifics. You don't normally need to do anything special to support IPV6 if you're using the http networking libraries everyone uses nowadays.

Please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify the issue(s)

it might sound stupid but i have a problem: iTunes Connect rejected my app, claiming "We discovered one or more bugs in your app when reviewed on iPad running iOS 10.2 on Wi-Fi connected to an IPv6 network.". and they want me to: "Please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify the issue(s), then revise and resubmit your app for review.".
Now, I understand that since 6/16 each app should supports IPv6. Because an application is just a software, i understand that they mean that each URL that I enter from my app should be accessible through IPv6. The weird part is that when i'm trying to reach sites which only available at IPv6 (like http://test-ipv6.com/, http://ds.testmyipv6.com/) i can't reach them, not from Android device, iOs devices, or from any mac. It's hard to believe that different ISP-s doesn't provide IPv6 support.
What am i missing here ?
Did any of you had that problem ?
Anything similar ?
It doesn't mean that servers need to be accessible through IPv6 (although it is highly recommended), it means that your application shouldn't care whether the server is IPv4 or IPv6. Some networks use NAT64 and DNS64 and will give your application IPv6 addresses even for servers that are only reachable over IPv4.
Apple's requirement is that your application must work in such situations.
This has been asked many times. Please look at previous answers. Here are some references:
Is Apple iOS defaulting to IPv6-only, on an app-by-app basis, in the real world?
Can't reproduce (IPv6?) connection issue that App Store review team is having

App store Rejects App for IPV6 network support on iOs 10

I got an app rejection mail from apple which is below,
We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 10.0.2 on Wi-Fi connected to an IPv6 network.
Specifically, app remains on splash screen upon launch.
Based on their request i have created the NAT64 network on my Mac and shared that internet for the iPhone 5S device 10.0.2 os version , App was working fine,
But apple says its not working with IPv6
Can anyone confirm that do i need to check anything else?
Related question
Environments:
Appcelerator Studio Ti SDK 5.1.0 GA
XCode Version 6.3
Thanks in advance
Just Read the mail you got from apple people. Answer will be there only.
Use wireshark to know what exactly your network doing.
Also to understand the problem better use wireshark for analyzing what is going on - create an network as outlined in that session and see what happens on the wifi port
https://developer.apple.com/videos/play/wwdc2015/719/
for more info check #Sean Answer
After quite a bit of stress, I can confirm that the issue was a problem with our backend not being correctly configured for IPv6. Apparently, AWS doesn't support IPv6, nor IPv6-only DNS through Route53. I ended up moving all the internet facing bits of the backend away from AWS for the time being. I wanted to leave this up because I think there are probably going to be others who find themselves with similar problems as people start submitting updates past the IPv6-only restriction. The best tool I found for testing server/dns readiness has been: http://ready.chair6.net/
Request your hosting provider to assign your server IPv6 as well and they will not charge you for this. This will resolve your IPv6 issues.
In my case I contacted the hosting provider about this issue and they said IPv6 is not assigned to my server I requested them and asked for the cost, they said it is free of cost and will assign it now. I think hosting companies have to assign IPv6 to all servers but they are assigning it on priority bases for those who are facing this issue.
So better you contact hosting provider for your IPv6 assignment.

My ios app got rejected due to ipv6 network issue

My app got rejected with message from Apple as "Your app crashes on iPad running iOS 10.0.2 connected to an IPv6 network.” and also did not get anything from the crash log attached. Please reply whoever resolved this issue.
Actually I am getting server not found error whenever trying to access the api server from ipv6 only network. My api server only supports ipv4 network. Do I need to change anything in api server? Can anyone post any sample code to access api server using NSUrlConnection object that support the ipv6 only network?
If you are using AFNetworking library or Apple's Reachability class, updating your classes, than problem solved.
Don't get confused by that message. I got that too but the problem is not necessarily caused by the IPv6 Network. My feeling is they just write this always even if the error is something else. I had this with an app myself last week but the error was just a completely different reason. Maybe you just look into your code where the problem occurred. They probably wrote at which point in your app it crashed.
App is now approved by the apple review team after increasing the target version to 9.2 previously it was 8.1.
A lot of server environments have not started supporting IPV6 (Think Azure in some configurations). This causes the scenario where the api being used by the app are not useable. Do handle such scenarios in your code.
Apple's own reachability class and some other third party frameworks use low level apis/sockets for their own purpose. These are the problematic areas.
Most of the High level code using NSURLConnection is ok, but if you are using any third party libraries or older versions of AFNetworking, you'll need to check if they are using any sockets. If they are, then look for options/upgrades.
We faced the same issue recently, ended up with lots of fixes to server and third party libs in the app.

App Rejected with iOS IPv6 network

Yesterday, I submitted my app for review, but I got this message from Apple:
We discovered one or more bugs in your app when reviewed on iPad iPhone running iOS 9.3.2 on Wi-Fi connected to an IPv6 network.
Specifically, upon review we have found the application still experiences a loading issue and unable to review the application content.
My app uses ionic framework, how can I fix this problem?
I already used domain to access my server, but this problem still exists.
Yes. According to apple's policy , your application must supports IPV6. so, please check your application supports IPV6. Supporting IPv6 in iOS 9
To test, if your application supports IPV6 or not please check this ,
Supporting IPv6 DNS64/NAT64 Networks
To check with creating follow this steps , which indicate on apple's page .
To set up a local IPv6 Wi-Fi network using your Mac
1) Make sure your Mac is connected to the Internet(with ethernet), but not through Wi-Fi.
2) Launch System Preferences from your Dock, LaunchPad, or the Apple menu.
3) Press the Option key and click Sharing. Don’t release the Option key yet. (don't forget to press option key)
4)Select Internet Sharing in the list of sharing services.
5)Release the Option key.
6)Select the Create NAT64 Network checkbox.
7)Choose the network interface that provides your Internet connection, such as Thunderbolt Ethernet or Only Ethernet.
8)Select the Wi-Fi checkbox.
9)Click Wi-Fi Options, and configure the network name and security options for your network.
10) Select the Internet Sharing checkbox to enable your local network.
11)When prompted to confirm you want to begin sharing, click Start
12) Now your mac mini is working as a hotspot and useing IPv6 NAT64 network
(looks like above image when hotspot created)
Now connect your iphone with your mac mini's hotspot. and Test your Application it's working properly or not.
I hope this answer is helpful you.
Edit :- Don't forget to add below frameworks.
1) WebKit
2) CFNetwork
You will find all the information on this link related to ipv6 policy. Supporting IPv6 DNS64/NAT64 Networks
We also faced the same issue.
Just registered your website with any CDN like cloudFlare and your app will be approved next time no need to shift the whole site to any other server. This is the easiest way to get approval from app store.
I think Apple has something wrong with this error!
I have an app (ionic app) rejected 3 times (during Nov 2016) for the same error and lastly accepted without making any change related to IPv6!
You may need to check your app for startup errors if you think that you have nothing to do with IPv6.
By the way: I did not check IPv6 compatibility on my app, and even more the app - in its inner views - has a connection to a webpage that hosted on a shared host with no IPv6 support!!
Please note that sometimes the mobile app works in the test environment but not in the Apple own test environment. Following this and this link can be very helpful in determining what's the problem with apple rejections.
It is clearly stated that the test environment is not exactly the same

Resources