18

I am experiencing an IPv6 problems with my iOS apps. Initially I submitted a few days before June 1st not knowing about IPv6 requirement (https://developer.apple.com/news/?id=05042016a).

They were reviewed on June 1st and rejected for IPv6 incompatibility/not being able to connect. I didn’t want to set up my own IPv6 network, so I updated the code to be compliant - I updated Reachability provided by Apple to the newest version. I am also using my own downloading library written by a former cofounder several years ago. It doesn’t connect to IP addresses, or anything Apple recommends against, so I didn't decide to upgrade it right now. I am also using an old version of AFNetworking.

I resubmitted an app. Was rejected again for same reason. I went and bought thunderbolt adapter and setup IPv6. Now I connect fine to that app. I can also connect fine to another app which still has very old Reachability code. My main problem is I want it to break in the same way that Apple is breaking, so I can fix it properly.

Notes:

-I initially tried to post a comment on IPv6 App Store Rejection but it was too long. I am @andytriboletti on Twitter, linked to by Sean in that question.

-I posted this on Apple Developer Forums, but it's still waiting for approval 10 hours later: https://forums.developer.apple.com/message/141461#141461

-Here's how I set up my IPv6 network using thunderbolt ethernet adapter on my Macbook pro. https://developer.apple.com/library/tvos/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

-I am testing with an iPhone 6 running OS 9.3.2. My Macbook Pro that is running the IPv6 network setup as described in Apple’s article linked to me is running 10.11.5.

-I have tested the exact version that Apple tested. I use buddybuild as a build automation tool, and they sent me an email with the version that was uploaded to iTunes connect by them.

-The app makes network requests to https://greenrobot.com (and also incldues advertising and analytics libraries). No hardcoded IP addresses in my code. GreenRobot looks like it is setup for IPv6: https://ip6.nl/#greenrobot.com

Community
  • 1
  • 1
Andy
  • 1,815
  • 2
  • 22
  • 49
  • Did you check if the advertising and analytics libraries are compliant? – Sander Steffann Jun 05 '16 at 15:21
  • Im looking to reproduce the failure here that Apple experienced, not to upgrade code without being able to verify a fix. – Andy Jun 05 '16 at 15:46
  • The failure might be in the advertising or analytics code... – Sander Steffann Jun 05 '16 at 19:37
  • We don't know Apple's setup so you can't duplicate it exactly but I guess that they remove all IPv4 connections and only allow IPv6 connections. They may also be running some sort of network packet analysis to check that no IPv4 requests are going out when only an IPv6 interface is available. Regardless, while you test you should ask each third-party framework to verify for you that the code is IPv6-ready. It is their code after all. – Robotic Cat Jun 05 '16 at 19:39
  • @Andy I am facing same rejection(iPv6 connection) issue but not able to reproduce it. I have tested it on location IPv6 network as Apple suggested and it is working fine. I am not understand why this problem is generating to Apple review team. Please suggest it. – Sankalap Yaduraj Singh Oct 07 '16 at 09:16
  • @SankalapYadurajSingh what's your backend URL? Are your DNS settings setup for IPv6 yet Apache is not serving it? – Andy Oct 07 '16 at 11:29
  • My web server is running on Apache 2.4. – Sankalap Yaduraj Singh Oct 07 '16 at 11:54
  • But we had already made same application live with this server api on 24 August 2016. – Sankalap Yaduraj Singh Oct 07 '16 at 11:57
  • You're not answering my question. Not the version of Apache. The URL, so I can check whether dns is setup for IPv6 using chair.net checker site. – Andy Oct 07 '16 at 12:03
  • I have checked my web api on http://ready.chair6.net/ site and showing this result https://postimg.org/image/wtxmstsz5/ . – Sankalap Yaduraj Singh Oct 07 '16 at 12:41
  • I'm not sure but it looks like you have IPv6 name servers? So you'd either have to remove them and only support IPv4, or also completely enable ipv6. I paid getmyadmin.com for my host greenrobot.com – Andy Oct 07 '16 at 19:47

2 Answers2

4

For what it's worth, I saw this as well and as discussed here, there's clearly a discrepancy between the documentation as of 6/14/16 and the App Review Team's setup.

Community
  • 1
  • 1
DesignatedNerd
  • 2,514
  • 1
  • 23
  • 46
2

As I suspected this did not have to do with the advertising and analytics code, as commenters suggested. It had to do with server compatibility with IPv6. I use Linode. I had my linux server admin upgrade to IPv6 for me on my server. If advertising or analytics failed to connect, they would just silently fail, there is no issue with game play. The problem was talking to my game server, which didn't work under IPv6 only.

According to answer: https://stackoverflow.com/a/37689996/211457 I used this site to test my site's compatibility: http://ready.chair6.net/ - http://ready.chair6.net/?url=https://greenrobot.com

Interestingly, Apple.com, Google.com, Facebook.com, Twitter.com are all non compliant. The only other domain I could find that was totally compliant like my site now is is arin.net.

After making these changes my app is now approved. Note I also added some error checking regarding not having a connection and displaying an appropriate error screen. But since that other Stackoverflow poster also had IPv6 server problems, and it doesn't make a lot of sense that just adding error checking would cause the app to suddenly connect, I am pretty convinced it was a server problem.

Another interesting thing is I talked to an iOS developer on the phone who had an update approved after June 1st. They are using AWS and had no idea what I was talking about regarding AWS not working under IPv6. Very strange, unless Apple is only requiring IPv6 only on a percentage of apps.

edit: New information: from a comment below: "If your server has an IPv6 record (i.e. claims to support IPv6), but your server's IPv6 support is broken, then it won't work on IPv6 obviously. But if your sever doesn't have an IPv6 record at all (i.e. claims to IPv4-only), it should work without any problems."

Community
  • 1
  • 1
Andy
  • 1,815
  • 2
  • 22
  • 49
  • I'm not totally sure this was it, but my app update was approved so I didn't want to leave this unanswered. As I said, when I tested under IPv6 network I created, app version rejected by Apple worked for me! Baffled, I used this answer as a clue: http://stackoverflow.com/a/37689996/211457 that answerer also got a call from Apple telling him that was the answer. When my team implemented his solution, then tested using the chair6 site, my app was approved. – Andy Jun 11 '16 at 00:55
  • user102008, please also see the comment on this question: http://stackoverflow.com/q/37725762/211457 "changing my dns to 2001:778::37 fixes the problem." – Andy Jun 11 '16 at 18:35
  • @Andy My device is connected with IPv6 network. When i am calling API which is connected to IPv4 showing error. Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=8 Please suggest me – VJVJ Jul 27 '16 at 12:15
  • @user102008 My device is connected with IPv6 network. When i am calling API which is connected to IPv4 showing error. Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=8 If i want to connect from IPv6 to IPv4 what should i do Please suggest me – VJVJ Jul 27 '16 at 12:16
  • @VJVJ what does the ready.chair6.net site say about your server? – Andy Jul 27 '16 at 13:09
  • @Andy DNS (IPv6 AAAA Record)FAILHostname does not have IPv6 AAAA record. DNS (IPv6 NS)FAILHostname does not have IPv6-addressed DNS servers. – VJVJ Jul 27 '16 at 13:12
  • @VJVJ so you will need to setup IPv6 dns on your server I think. I used a 3rd party admin to do this for me: Getmyadmin.com. I can provide Aswin, the owner's, Skype if you're interested. You could also try to figure out how to do it on your own, but I won't be much help. – Andy Jul 27 '16 at 13:15
  • @Andy: If your server has an IPv6 record (i.e. claims to support IPv6), but your server's IPv6 support is broken, then it won't work on IPv6 obviously. But if your sever doesn't have an IPv6 record at all (i.e. claims to IPv4-only), it should work without any problems. The OP's server doesn't have an IPv6 record at all. – user102008 Jul 27 '16 at 17:13
  • @VJVJ I don't know what your problem could be. I think user102008 is correct. – Andy Jul 27 '16 at 17:52