Apple IPv6 $http Ionic reject

Hi,

I have received my app rejected some days ago due to following reason:

We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 9.3.5 on Wi-Fi connected to an IPv6 network.

Specifically, we found an error message is produced when logging in. We’ve attached a screenshot 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 Networks and About Networking

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.

I have set two IPv6 networks, one of them in a time capsule and other sharing from my MacBook Pro. From the Time Capsule’s network (who is a fully IPv6 network) the app works properly. From the MacBook Pro shared network I receive two results… When the device connect to this IPv6 network and get only DNS configured, the app works, but when it receive the DNS and one IP with the format 169.254.X.X the app crash the connection to the server.

The problem is that $http request answer goes by error side instead success side. I have tried with Ionic $http and cordova-http plugin (GitHub - Switch168/cordova-HTTP: Cordova / Phonegap plugin for communicating with HTTP servers. Allows for SSL pinning!) and the result was the same. I don’t know what’s happening, because I have a Cordova (only Cordova, not Ionic) project with AngularJS and it doesn’t fail. Then, what’s the difference between Ionic $http and AngularJS $http? I can’t understand what’s the difference.

Any help would be appreciated because it’s so important to me solve it asap.

Fully IPv6 Time Capsule network (App working with this configuration):

Local IPv6 shared network (App working with this configuration):

Local IPv6 shared network (App NOT working with this configuration):

$http request example (using Ionic $http and cordova-http plugin):
callWs: function(ws, method, data){
var defferer = $q.defer();

  if (device.platform == 'Android' || device.platform == 'iOS'){

    $window.CordovaHttpPlugin.postJson(url_request,
      data_sent,
      {"cache-control": "no-cache, private, no-store, must-revalidate",
      "Authorization": basic_auth,
      "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
      },
    function(res) {
      defferer.resolve(res.data);
    }, function(error) {
      defferer.reject(error);
    });

  } else {

    $http({
        url: url_request,
        method: 'POST',
        withCredentials: true,
        timeout: HTTPTIMEOUT,
        headers: {
            'cache-control': 'no-cache, private, no-store, must-revalidate',
            'Authorization': basic_auth,
            'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
        },
        dataType : 'json',
        data: data_sent
    }).then(function (res) {
      defferer.resolve(res.data);
    }, function (error) {
      defferer.reject(error);
    });

  }

  return defferer.promise;

}

Nobody has any tip? I’m going crazy, I have spent more than a week looking for the problem.

Yesterday I have tried to change CDVReachability.m to work with “reachabilityWithHostName” instead of “reachabilityWithAddress” but I don’t know how I can do it because I don’t know where can I obtain the hostname instead IP address. I have tried with AFNetworkReachabilityManager too, changing “managerForAddress” instead of “managerForDomain” but i’m unable to do it too. Anyone can help me, please?

Nobody has any tip or clue to solve this problem? I know that there are a lot of cases more like mine…

From Ionic team assure that this is not an Ionic problem but I’m sure that it is. I have sent to Apple one Cordova (no Ionic) with AngularJS app for my job three days ago and I have received yesterday approved without any problem. The communication with webservices are with the same (AngularJS $http) that Ionic project I made for me. Then… I keep my opinion that it’s an Ionic problem…

Did you ever get this solved? What was the problem that you had? Basically I’ve just received an emailfrom apple as well saying that nothing happens in the App when they connect it to IPV6 network…

Did you ever solve this issue? I am using Ionic and Angular 1.

Are you using hardcoded IPv4 address numbers in your app? If so, get rid of them and substitute DNS hostnames.

@rapropos I wasn’t using hardcoded IPv4, but indeed it was a problem with the DNS of my servers.

My server does not have an IPv6 IP to serve ipv6 requests, so what I did was I activated a proxy and executed a new test for IPv6 readiness using this website: http://ipv6-test.com/

And now that the IPv6 tests are passing I submit my app again for review in the App store, let’s see the result.

But as for further reference for people seeing this post in the future.

THERE IS NO PROBLEM AT ALL in $http from angular or even Ionic related to ipv6. As far as I could understand it was just a matter of the server-side end not being able to handle pure IPv6 requests which are part of the Rules for the App store.

Hello!

Anyone have some answer on this…?

We are having this problem too. We have now a server-side environtment properly enabled and working, passing all tests but Apple is still rejecting the app. They are telling us that the app doesnt load, but we are following their documentation: https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1 and creating a IPv6 Network and we use the app (under iOS 9.2) and an IPv6 Network without any problem…

We are a bit stucked here :frowning:

Thank you!

I just got same ip v6 reject reason, what I have to do?

hello you didnt write result. I have same issue. If it solved your issue, I try it.

Recently i was also having this problem…

We discovered one or more bugs in your app when reviewed on iPad running iOS 11.2.5 on Wi-Fi connected to an IPv6 network.

Specifically, the app did not load any contents on launch.

i was using cordova with ionic 3 and angular 5.
After googling i found a solution somewhere in stackoverflow that says to use this plugin…

before i was using jquery http request but after using this plugin my app got published… :slight_smile:

Just to add my experience here , we got our app rejected for same reason this week … I just updated cordova to 8.0 from 7.1.0 and updated all plugins … resubmitted and app got accepted the next day … Ours is an ionic 1 application using $http of Angular 1 for server communication… Not sure exactly what happened …

1 Like