Reachability.swift: app get rejected because of ipv6 issue

Created on 20 Jul 2016  Â·  22Comments  Â·  Source: ashleymills/Reachability.swift

hi! i created one iOS app with swift programming it get rejected 4 time because of ipv6 problem m not sure that it is because of Network-Reachabilty. m also using alamofire , and is also has network rateability class today i checked with breakpoint but its not going there its checking internet connectivity only with NetworkReachability.
any solution or any idea why my app is getting rejected.

they send me this

Performance - 2.1

We discovered one or more bugs in your app when reviewed on the iPhone running iOS 9.3.2 on Wi-Fi.

Specifically, we were still unable to login to the app.

We've attached screenshots for your reference.

Next Steps

Please run your app on a device to identify the issue(s), then revise and resubmit your app for review.

Apps are reviewed on an IPv6 network. Please ensure that your app supports IPv6 networks, as IPv6 compatibility is required.

For additional information about supporting IPv6 Networks, please refer to Supporting IPv6 DNS64/NAT64 Networks and Supporting IPv6-only Networks.

For a networking overview, see About Networking.

If we misunderstood the intended behaviour 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).

SOLVED!

Most helpful comment

Hello, just to keep you posted for anyone who could have this problem with Apple review.
My app has its backend on the cloud, Heroku and mLab, so I emailed their support, and this is what they told me:

mLab response:

Unfortunately, the cloud providers doesn't even support IPv6 yet, so it's not possible for us to provide a service that does.

Heroku response:

Hi there,

Sorry for the confusion here. Apple is not requiring that an application only communicate via IPv6, what they require, is that applications support IPv6-only networks in case the application is running within one.

For example, applications may not use an IPv4 address (ex. 0.0.0.0) in order to check for a network connection, as this will always fail in an IPv6 environment. A device running on an IPv6 network will have access to a NAT64 gateway which provides seamless access to IPv4 networks and is invisible to the device.

We recommend that you check out how your app manages it's networking and network requests, and then clarify the particular points with Apple if necessary. Note that using domain name-based resolution is almost always preferred over a static IP address, the latter of which being the most common failure we've seen with App Store submissions.

When we do have IPv6 support or any news about it, we will announce it via our blog and changelog.

So, I understand from the latter answer that server side, although not supporting IPV6, should not be the cause, since if the app manages IPV6, it will still be able to connect to IPV4 adresses (as long as they are not literals) leveraging NAT64 DNS servers.

After struggling quite a bit, and since in the second reject Apple did give some additional info and crash reports, I found that the bug they are reporting only occurs in release build (that's why I could not reproduce it in debug builds). And it does not seem to be related to IPV6, since from my new tests I see it also happens with standard IPV4 connections.

For what concerns Reachability, it is not used where the crash happens, so I think it is not really the cause. This note is only for helping out.

The bottom line is that Apple will always include the IPV6 warning when they reject an app, but it's not sure that lack of IPV6 support is the real cause of the failue. They are just saying: hey your app crashes, or login forever, check that it supports IPV6.

Hope it helps

All 22 comments

The feedback from apple says they cant login to the app, the way i understand, reachability doesn't have a direct influence on login.

It could be related to using http and not https, perhaps?

Can you confirm this is definitely Reachability related?
Can you reproduce the issue?
If Reachability is removed, does the issue still occur?

I was rejected by the same reason , I search the internet and found Reachability use SCNetworkReachabilityCreateWithName will cause the issue . how can i fix it?

hy hii
i solved that issue that was bcz of our server was not supporting ipv6 so
we change server side.

On Mon, Aug 22, 2016 at 12:09 PM, smalldu [email protected] wrote:

I was rejected by the same reason , wo search the internet and found
Reachability use SCNetworkReachabilityCreateWithName will cause the issue
. how can i fix it?

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ashleymills/Reachability.swift/issues/119#issuecomment-241326168,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ARMiCTgJdq-pB5uhrhOnCYy4EtL44ATrks5qiUQGgaJpZM4JQlDa
.

Pooja Negi
PNKBKSH.

Hello, same issue here, app was rejected for testing due to lack of support to IPV6. This is documented here, and seems definitely related to Reachability:

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

Any suggestion on how to fix this?

For me its all bcz of our server was not supporting IPv6

Sent from my iPhone

On 22-Aug-2016, at 12:09 PM, smalldu [email protected] wrote:

I was rejected by the same reason , wo search the internet and found Reachability use SCNetworkReachabilityCreateWithName will cause the issue . how can i fix it?

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Check your server is it supporting ipv6... Bcz for me this bcz of my server was not supporting IPv6

Just type in google website for checking server is supporting ipv6 u will get lots of website to check and enter your server url u then it will give the result

Sent from my iPhone

On 13-Sep-2016, at 12:40 PM, gbtommasi [email protected] wrote:

Hello, same issue here, app was rejected for testing due to lack of support to IPV6. This is documented here, and seems definitely related to Reachability:

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

Any suggestion on how to fix this?

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I don't think this is the issue in my case. In my understanding, Apple requires that apps are able to communicate with networks that only support IPV6, not that they can only connect through IPV6 on any network...

@gbtommasi @smalldu

  • Can you confirm this is definitely Reachability related?

To test this is the case, you can create a local Mac based IPV6 network as detailed here… https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW16

Once you've done this:

  • Can you reproduce the issue?
  • If Reachability is removed, does the issue still occur?

Thanks
Ash

Hi Ash,
thank you for getting back. I did this test yesterday, and it actually worked. So I got back on them asking what the heck they are complaining about, I am waiting for a response.
Since I have no low level APIs in my code, nor address literals whatsoever, The only thing I could suspect was Reachability, but it actually seems it is not, at least for what I could test here using my Mac as an IPV6 router.

Looking on the wifi network settings on the iPhone I used for this test, the only IPV6 address is the DNS, IP address is still looking old stile, not sure if it is what it is meant to be (I am not an expert of internet protocols). This is what it looks like:

image

So I am not sure if this test is significant, I sent them the screenshot also.

Anyway my apologies. I will let you know if they get back to me with a more specific answer.

@gbtommasi Did you get an update from Apple re. this issue?

Ash

Hi, they replied yesterday just saying they keep on finding this issue... I am debugging the app for any possible condition to see if it's something else than the connectivity

I have a doubt on ur server bcz the same problem i faced my app get rejected at 5 tym with same issue.

Sent from my iPhone

On 14-Sep-2016, at 9:36 PM, gbtommasi [email protected] wrote:

Hi Ash,
thank you for getting back. I did this test yesterday, and it actually worked. So I got back on them asking what the heck they are complaining about, I am waiting for a response.
Since I have no low level APIs in my code, nor address literals whatsoever, The only thing I could suspect was Reachability, but it actually seems it is not, at least for what I could test here using my Mac as an IPV6 router.

Looking on the wifi network settings on the iPhone I used for this test, the only IPV6 address is the DNS, IP address is still looking old stile, not sure if it is what it is meant to be (I am not an expert of internet protocols). This is what it looks like:

So I am not sure if this test is significant, I sent them the screenshot also.

Anyway my apologies. I will let you know if they get back to me with a more specific answer.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

You could be right.
This is the first thing I checked last week. I am on Heroku so I did some research and here's what I've found:

https://kb.heroku.com/apple-has-rejected-my-application-because-heroku-does-not-support-ipv6

I have to say I am quite confused on the subject, anyway

Inviato da iPhone

Il giorno 19 set 2016, alle ore 05:19, Aishly <[email protected]notifications@github.com> ha scritto:

I have a doubt on ur server bcz the same problem i faced my app get rejected at 5 tym with same issue.

Sent from my iPhone

On 14-Sep-2016, at 9:36 PM, gbtommasi <[email protected]notifications@github.com> wrote:

Hi Ash,
thank you for getting back. I did this test yesterday, and it actually worked. So I got back on them asking what the heck they are complaining about, I am waiting for a response.
Since I have no low level APIs in my code, nor address literals whatsoever, The only thing I could suspect was Reachability, but it actually seems it is not, at least for what I could test here using my Mac as an IPV6 router.

Looking on the wifi network settings on the iPhone I used for this test, the only IPV6 address is the DNS, IP address is still looking old stile, not sure if it is what it is meant to be (I am not an expert of internet protocols). This is what it looks like:

So I am not sure if this test is significant, I sent them the screenshot also.

Anyway my apologies. I will let you know if they get back to me with a more specific answer.

You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/ashleymills/Reachability.swift/issues/119#issuecomment-247905135, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ATP7bkxMKJXxd7axvUgGIu4dYFuNutz3ks5qrf8tgaJpZM4JQlDa.

Hello, just to keep you posted for anyone who could have this problem with Apple review.
My app has its backend on the cloud, Heroku and mLab, so I emailed their support, and this is what they told me:

mLab response:

Unfortunately, the cloud providers doesn't even support IPv6 yet, so it's not possible for us to provide a service that does.

Heroku response:

Hi there,

Sorry for the confusion here. Apple is not requiring that an application only communicate via IPv6, what they require, is that applications support IPv6-only networks in case the application is running within one.

For example, applications may not use an IPv4 address (ex. 0.0.0.0) in order to check for a network connection, as this will always fail in an IPv6 environment. A device running on an IPv6 network will have access to a NAT64 gateway which provides seamless access to IPv4 networks and is invisible to the device.

We recommend that you check out how your app manages it's networking and network requests, and then clarify the particular points with Apple if necessary. Note that using domain name-based resolution is almost always preferred over a static IP address, the latter of which being the most common failure we've seen with App Store submissions.

When we do have IPv6 support or any news about it, we will announce it via our blog and changelog.

So, I understand from the latter answer that server side, although not supporting IPV6, should not be the cause, since if the app manages IPV6, it will still be able to connect to IPV4 adresses (as long as they are not literals) leveraging NAT64 DNS servers.

After struggling quite a bit, and since in the second reject Apple did give some additional info and crash reports, I found that the bug they are reporting only occurs in release build (that's why I could not reproduce it in debug builds). And it does not seem to be related to IPV6, since from my new tests I see it also happens with standard IPV4 connections.

For what concerns Reachability, it is not used where the crash happens, so I think it is not really the cause. This note is only for helping out.

The bottom line is that Apple will always include the IPV6 warning when they reject an app, but it's not sure that lack of IPV6 support is the real cause of the failue. They are just saying: hey your app crashes, or login forever, check that it supports IPV6.

Hope it helps

@gbtommasi Thank you very much for looking into this issue - I'm sure this answer will help a lot of people

Cheers
Ash

We've found a bug in the library that involves "zeroAddress.sa_family = sa_family_t(AF_INET)".

AF_INET is not compatible with IPv6 protocol and it's probably the cause of the Apple Reject... indeed in their instructions we can found exactly a reference to AF_INET6, that is compatible the IPv6 protocol.

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

schermata 2016-10-25 alle 11 49 56

Hope that helps...

Greetings.

P

@piegandolfi As far as we are aware, there is no current problem with the library regarding IPv6 - Apple seem to include the IPV6 warning when they reject an app, whether or not that was the cause.
Have you had a rejection that was definitely caused by an IPv6 bug?

@ashleymills
As Apple says...yes, we've got the same issue of @Aishly (Performance - 2.1).
Our backend is tested and it is fully compatible with IPv6.

Of course "ReachabilitySwift" is not directly the cause of the problem, but because of how we use it, like a "Connection Issue Alert", every time Apple our App on an IPv6 network the Alert comes out and that behavior it's not conform with Apple guidelines.
That's all.

Thanks for the support.
P

Apple has rejected my app for the 2nd time and Im facing the same issue. Apple has rejected the app because they couldn't login to the app. Im using AFNetworking 3.0 as network communication library. Failed to recreate the issue with a NAT64/DNS64 Hotspot or over IPv4 network. Im not sure that server side is supporting IPv6 or not. Is there any recommended way to check this?

@visuddha See #168 for details on how to check your network

Closed as stale (and Reachability doesn't seem to be the cause of the issues faced) 👌

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dave212 picture dave212  Â·  3Comments

AlekseiR picture AlekseiR  Â·  4Comments

cannyboy picture cannyboy  Â·  9Comments

ShayanPapershift picture ShayanPapershift  Â·  3Comments

couchdeveloper picture couchdeveloper  Â·  4Comments