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

3 weeks later, the third party vendor for the SDK we use appears to have admitted the issue was on their side after all. (Though, to be fair to them, I wasn't able to reproduce the issue on an IPv6 only network.)


I have no idea what the problem actually was, but it seems it was a genuine bug in the library rather than an error on Apple's network. Very frustrating.

Just a heads up...


I just want to say that my app was rejected twice. They said it was crashing on iPad and iPhone while connected to an iPv6 network. However, after some back and forth with them, they finally revelaed it worked "as expected" on iPhone but the iPad was crashing. Which frustrated me because I spent so much time trying to figure out the networking issue when that wasn't the issue at all.


It turns out that in the UI for one of the iPad screens, we were passing in float values into a UIColor method. So when it ran on 64-bit systems it would crash. Changing it to CGFloat values fixed the issue and it no longer crashes on iPad. (It's been several years since we updated the app and it was previously built for just 32-bit)


So, just because they say it is an issue with running on an IPv6 network, it may have nothing to do with that.

So, just because they say it is an issue with running on an IPv6 network, it may have nothing to do with that.

Right. In fact, that’s the first thing discussed in my IPv6 and App Review post, which is linked to from FAQ#6 of the Supporting IPv6-only Networks pinned post.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Hello. I am currently going through the exact same problem. Hybrid app that works in Apple approved testing environment but they cannot load login page over their IPv6 network. Do your app get approved? Can you share any solutions? Thank you.

Can you share any tips on how to resolve the issue? Thank you.

Thanks for the help, I contacted DTS for a status update and they answer me that the DNS response whit an IPV6 adress, so the app send the request to the IPV6, but my server hast port 80 closed for IPV6 and response error. This behavior can not reproduce in NAT64. So I passed the status to my client (is not my server or mi app) in order to they resolve the server problem.

My app is rejected 3 Time ..

  • 2. 1 PERFORMANCE: APP COMPLETENESS
  • 3. 1.1 BUSINESS: PAYMENTS - IN-APP PURCHASE

Thank you for your resubmission and for addressing the issues with your app. Upon further review, we found the following:

Performance - 2.1


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, your app displays an error message when we attempt to buy your In App Purchase products.


We've attached screenshot(s) for your reference.


Next Steps


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.


If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.


For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue(s). For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue(s).


Resources


For information about supporting IPv6 Networks, please refer to Supporting IPv6 DNS64/NAT64 Networksand About Networking


Business - 3.1.1


Your app uses intermediary currency to purchase items that function as non-consumable products but does not include a restore mechanism.


Users restore transactions to maintain access to content that they've already purchased.


Next Steps


Please modify your app to include an optional user registration feature that allows users to restore their purchases to all of their iOS devices.


We recommend indicating that account registration is necessary to restore previously purchased In-App Purchase products, and providing a way for users to register later if they wish to access this content in the future.


If you have difficulty reproducing a reported issue, please try testing the workflow described in Technical Q&A QA1764: How to reproduce bugs reported against App Store submissions.


If you have code-level questions after utilizing the above resources, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide:
- complete details of your rejection issue(s)
- screenshots
- steps to reproduce the issue(s)
- symbolicated crash logs - if your issue results in a crash log

@Triplefun-Damian - Did you find a solution to this since I am running my head to a wall with this issue... I am also using Unity

Hey, we are facing similar issue. How did you get it resolved ?