Pass the NAT64 IPv6 test but App Store rejected the build

Hi


We follow the guideline to setup the IPv6 NAT64 environment to test our app works in the IPv6 NAT64 network.

https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1


In the iOS Wi-fi setting it shows DNS 2001:2:0:aab1::1 and IP address shows 169.254.61.21, which should be correct based on another thread from the reply of this thread: https://forums.developer.apple.com/message/140901#140901And our app works fine in the testing environment. However, our app still got rejected due to network problem in the reviewer's testing environement. We cannot replicate the problem and would like to post this to see if anybody having similar issue.

We use AFNetworking 3.1 to issue the HTTP requests and test for reachability, which should be based on NSURLSession and fully support IPv6. We grepped the code and are sure that we don't have any IPv4 address in the code base. We are thinking to do Packet Capture to debug our case, but in the meantime we would also like to ask here to see if anybody could point out that potentital root of cause of the rejection.

Thanks in advance.

Replies

I believe they have been using an invalid test environment with IPv4 turned off. Mine was rejected for the same reason, but approved this morning with no changes on my part. Unfortunately, I wasted a lot of time this week trying to debug this nonexistent issue.

Same problem here - ours is a Unity app - works in the testing environment set up as described above, but failed Apple validation. No logs being sent either, so it's a bit frustrating

Same problem here - ours is hybrid app - works in the testing environment set up as described above, but failed Apple validation three times. Apple Review cannot load our login page over IPv6 network. Who can tell me why?

Same issue, we are using getaddrinfo() to resolve a host name to an IP for connecting to our server and have tested it in both IPv6 NAT64, where we can see from the logs that it's getting an IP6 address and uses it to connect without any problems and in another network with just IPv4 support, where it is getting an IPv4 address and using that with no issues. This is however getting rejected in the review for not supporting IPv6.

Okay, our app passed validation yesterday! What happened:


  • Apple tested our app and were unable to connect to our servers via IPv6 using the NAT64 setup
  • They asked a fellow engineer to get in touch with us to explain what's going on. We're based in France, so the engineer they asked spoke French
  • Before getting in touch with us, the engineer decided to also test the game, and with the same version, same internal network, same iPad version...it worked
  • He rang us to explain what was going on - they're going to try and figure out what's going on internally - and did some tests with the app to make sure it passed normal validation, before releasing it


So there does seem to be something going on internally with their networks, and I'd suggest trying to get in touch with Apple to see if you can get talking with an engineer who can test it. YMMV.


Another thing to try is, when you submit your app for review, also submit a video showing the app running through the NAT64 setup and connecting properly.


Note that as part of the $99 fee every year, you get two requests for technical assistance for free

Having a very similar issue to all of yours' here. The App Review folks continue to fail to sign into our app using the demo account credentials provided with the submission. Stragne thing is the we have very recently submitted essentially the same codebase for other clients (with different configs and skins, of course) and they have ALL been published except for the app in question.


I have almost lost my mind trying to reproduce the issue locally and despite numerous attempts (including following the steps here: http://apple.co/29kSjjB), have not yet succeeded.


I have now escalated my issue with the review process to Apple engieers and currently awaiting their reponse to see how we can get to the bottom of this. It's somewhat encouraging to read that at least in your case there was an internal networking issue on their part.


As soon as I have a resolution, I will post its synopsis here.

The saga is over for us. I had to file an Apple Developer Technical Service ticket and get and Apple Engineer to check the sanity of my approach. It turned out that there is an apparent inconsistency between the way macOS El Capitan's NAT64 testing environment treats IPv6 addresses compared with the testing environment of App Store Review team.


The Apple Engineer recommended that I keep re-submitting the app until yesterday (July 15) and if I still wasn't successful by then, to let him know.


Strangely, an App Review Team member left a message in the Resolution Centre of iTunesConnect account wanting to speak with me over the phone. But before I got a chance, the app's status changed from 'In Review' to 'Pending Developer Release'. Just like that!


So I can finally confirm that there was nothing inherently wrong with my codebase and the IPv6 related objections turned out to be entirely due to those network inconsistencies on the side of App Review environment.


Glad this is all over, and so is our client.

Same problem here -ours is KOKO app - We submitted for 3 times but all being rejected. We followed the guideline mentioned above and made a video for the reply but didn't work. We have another app use similar backend service and it passed the review. I was wondering if there is any other solution since we didn't violate other rules on the guideline. Really need the help, thanks in advance.

We've run into this problem too, in our case the issue is with an app that uses the third party sdk, and part of that SDK failed during the setup process for the App Store reviewer.


Testing the same build of the app (via testflight) on the recommended NAT 64 test environment everything works just fine.


We've asked DTS for help as reading through the thread that seems to be how other people solved the issue, waiting to hear back from them.

Hi jogu,


did you get any feedback from DTS?

Yes, but so far it's very generic advice (yet I also can't share it here because it explicitly states that it's under NDA).


The general upshot was "make sure you've actually tested your app". Just because App Review say it failed on IPv6 doesn't mean your app is working for them on IPv4, so the problem may not be IPv6 related. I know that one developer who complained about this issue it eventually turned out they've never tested the app build they gave to App Store review and their production server environment was actually broken... (Seriously people, enable the build for testflight and at least give it a smoke test before you send it for review!)


The relevant next step for me seemed to be that I need to collect a packet trace of the app on an IPv6 network, then open a bug report with that, then send it to DTS along with details of which server(s) in the trace I think might be the ones App Review is having a problem with. (This seems rather unintuitive; surely it would be better for app store review to send me a packet trace so I can see which server they have a problem accessing!)


Currently I'm very frustrated with the whole thing; there is currently no evidence that the problem is with my app.

On other important point that DTS shared: If you're using the NAT64 test setup (the one recommended in https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW16 ) then beware that this is not a full IPv6 network; it checks your client app works okay on ipv6, but does not check the server at all. You need to setup a proper IPv6-only environment that has real IPv6 connectivity if you want to fully test the server side too.

They also shared these links for advice:


https://forums.developer.apple.com/message/136166#136166


which links to:


https://forums.developer.apple.com/message/147579#147579

So I finally got our app through review.


DTS kept on providing generic advice (eg. even though I explained that I had tested our app on an actual real IPv6 network, they kept on explaining how the NAT64 test network would behave differently than the App Store Review network if the servers had AAAA records in the DNS and that this could be why I did not see the problem). I guess they are simply having a difficult time currently with a lot of similar issues, and that many of those issues are caused by server configuration issues, people not testing what they submit, etc.


What actually worked for us was explaining to app review exactly what testing we had done to show that there wasn't a generic issue with the app. Luckily they were still able to use our app (despite seeing some network errors in the initial login process) so were able to test it out and approve it. App Review (via the itunesconnect resolution center) were actually fairly approachable.


I also followed DTS's advice to submit a bug report with a network trace of the app working on the NAT64 test environment, apparently someone in the App Review support team will look that and try to determine if there is an issue with the App Review network.

Same problem to me.
At first I thought that misuses the NSURLSession classes, so switch to AFNetworking, but again rejected, I contacted tech support and they told me that captures network traffic from my NAT64 and send it to the page report bugs (bug report number 27932723), and answer them with the number of report. Today I still awaiting a response.

There are several actions you could take, from my experience:


1. You need to make sure you are actually testing the build you sent app store. Make it available it on testflight and install it from testflight onto your test devices.


2. You need to test on a real IPv6 network, ideally with IPv4 disabled - eg. give assign bogus IPv4 IP addresses. (The NAT64 test network is not a real IPv6 network, it usually communicates with the server over IPv4. There may be a problem with your server that you will only see what you access it on a real IPv6 network. AppStore Review use a real IPv6 network.) You can check if you're on a real IPv6 environment by visiting http://ipv6.whatismyv6.comfrom safari on the device.


3. If you've sent the bug number to DTS and not heard back from them within a couple of days, follow up asking for a status update. Beware that the final response from DTS may well just be something like "Our review of the issue indicates that this is an issue which can only be investigated by the App Review Team."


4. Try telling app review you've raised a bug, give them the id, and explain that you have fully tested your actual submitted app on IPv6 (which you will have once you've done "1" and "2") and it works fine, so you're confident the problem is with their network, and ask them what else you can do to show that the app works fine.