0
votes

My app get rejected by app store because of IPV6 issues. Here is the information by App Store

  1. 1 Performance: App Completeness Guideline 2.1 - Performance

Your app crashed on iPad running iOS 10.3.1 connected to an IPv6 network when we:

entered the provided credentials. The app loaded for a second and then crashed. When relaunching the app it appears we’re stilled “logged in” but the app loads for a moment and crashes again.

This occurred when your app was used:

  • On Wi-Fi

We have attached detailed crash logs to help troubleshoot this issue.

Next Steps

To resolve this issue, please revise your app and test it on a device while connected to an IPv6 network (all apps must support IPv6) to ensure that it runs as expected.

Resources

For information on how to symbolicate and read a crash log, please review Tech Note TN2151 Understanding and Analyzing Application Crash Reports.

For information about supporting IPv6 Networks, please review Supporting IPv6 DNS64/NAT64 Networks and About Networking.

How can I solve this issue?

3

3 Answers

1
votes

I faced this problem in iOS. Than I change my reachblility class internet connection method and my app approved. If You want to make Ipv6 network in your system than please check

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html

Objective c

+ (instancetype)reachabilityForInternetConnection
{
  struct sockaddr_in6 zeroAddress;
  bzero(&zeroAddress, sizeof(zeroAddress));
  zeroAddress.sin6_len = sizeof(zeroAddress);
  zeroAddress.sin6_family = AF_INET6;
  return [self reachabilityWithAddress: (const struct sockaddr *)  &zeroAddress];
}

Swift 3

 func ipv6Reachability() -> SCNetworkReachability? 
{
var zeroAddress = sockaddr_in6()
 zeroAddress.sin6_len = UInt8(MemoryLayout<sockaddr_in>.size)
   zeroAddress.sin6_family = sa_family_t(AF_INET6)

   return withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
    SCNetworkReachabilityCreateWithAddress(nil, $0)
 }
 })
 }
0
votes

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.

Google IPv6 test

Now it's accepted

0
votes

Problem is I used some code to check whether app connected to internet or not. Those code supports only for IPV4 not for IPV6. so I just update those code to supporting IPV6. Here is the code:

Old code:

var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)

New code:

var zeroAddress = sockaddr_in6()
zeroAddress.sin6_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin6_family = sa_family_t(AF_INET6)