I have analysed the IPV6 readiness of our apps.
On one of the screens, the user has to enter a ip address(e.g.: http://9.112.45.67:8080/gateway) and that is not a URL.
For testing my app on iPad, I create NAT64 environment on my Macbook Pro.
(Wi-Fi internet sharing with 'Create NAT64 Network').
I launch the app, enter the http://9.112.45.67:8080/gateway address and my apps works perfectly fine.
So for IPV6 address testing what else should I do?
I enter http://[2002:ab1:971::ab1:971]:8080/gateway and test.... This does not work.
The app does not use any kind of hardcoded ip addresses and also it uses NSURLConnection for making network requests.
I am not sure if this is enough to test the readiness. Any guidance is much appreciated.
Thanks in advance.
Related
Apple rejected my app with the following message:
"We discovered one or more bugs in your app when reviewed on iPad running iOS 10.3.1 on Wi-Fi connected to an IPv6 network.
Specifically, an error was displayed when we tried to login.
To resolve this issue, please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify any issues, then revise and resubmit your app for review."
On my tests I ran the app on the ipv6 network they help you create with a local machine on ethernet, and what happens is that I can't access the server for request due to "no internet connection".
I also tested the address I'm throwing my requests to and it looks like it is not IPv6 ready.
Could it be that the server side needs to be IPv6 ready?
I'm using NSURLSession for the tasks and my devices are running the latest ios.
From what I read this sounds like an issue we faced. We are in the UK which has limited IPv6 support at an ISP level. Apple rejected our app because our server which handled calls from the app was IPv4.
We resolved this by getting some IPv6 hosting from a company in the US and directing the requests from the app to it, and then across to our code on our IPv4 network here.
I need to test my application on IPv6 network on iPhone. As far as I have learned, I have several options:
Share IPv6 Internet via iMac as described in this tutorial; though when I tried to follow the steps there on an MacBook Air connected by bluetooth to an iPhone with turned on 3G there was no "Create NAT64 Network" checkbox for step 7 - do I nessesarely need to be connected via cabel or I need a stationary iMac?
Configurate IPv6 wi-fi on a router; though as far as I have learned to do this I need some special router that supports IPv6 and my Internet provider should be able to give me IPv6 connection. Is this correct?
Are there other, maybe easier ways to simulate IPv6 on an iPhone? How do I tell router that supports IPv6 from the one that does not?
I know its a bit late, yet it might help someone. You can create an ipV6 network via step 1 described. The trick is, at the time of clicking on BluetoothPAN option, you should press the option(ALT) key in the keyboard. Then Create NAT64 Network checkbox will be displayed at the bottom. This is the same case for WIFI & Ethernet too
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
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
I have a localhost website up at localhost:1336. When I run it on my simulator using Xcode, the app does not encounter any problem make a request to the localhost for data. But when I connect my iPhone via USB cable to the mac, and run the app on the iPhone device and makes the request, but then I get an error "Error- Could not connect to the server.".
I also confirmed that they are on the same Wi-Fi and using same IP. On Safari on my iPhone, I went to http://IPNumber:1336 and it was able to access the site via my iPhone. But some reason, through the app, it cannot connect to the server.
Any input or insight on this would be greatly appreciated. Thank you in advance.
the term 'localhost' means the same device, i think you mean a host on your local network? going localhost:1336 means your device is connecting to itself, its the same as going 127.0.0.1:1336. hence why it works on your simulator but not your phone, since your server and simulator are running on the same device
you have to use http://IPNumber:1336 in your app as well
"Localhost" means the same device. If you are not running a HTTP service on your iPhone, you should not use "localhost".
Another point, you are using "http", if your iPhone is running iOS9+, you will need to check whether App Transport Security will be an issue, here is an article on how to do that: http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/