2016-06-28 12 views
9

Opracowałem aplikację (dla IOS) napisaną w trybie macierzystym, która działa dobrze w sieciach IPV4. Niedawno firma Apple wysłała komunikat informujący, że moja aplikacja nie działała podczas testowania w sieci IPV6. Powiedzieli mi, że muszę je również dostosować do sieci opartych wyłącznie na IPV6.Jak wykonać wywołania API zgodne z IPV6 w reaktywnym języku natywnym za pomocą funkcji .fetch?

Pytanie brzmi, w jaki sposób mogę sprawić, że moje istniejące połączenia API będą kompatybilne z siecią IPV6?

Moje API wykorzystuje protokół https i jest wywoływane przez nazwę domeny, a nie przez surowy adres IP.

Próbkę pobieraniu nazwać używam to:

fetch(query,{ 
     method: 'post', 
     headers: Utils.fetchHeaders('post') 
     }) 
     .then(Utils.checkStatus) 
     .then(Utils.parseJSON) 
     .then(json => this._handleResponse(json)) 
     .catch(error => { 

     this.setState({ 
      votingError: 'Sorry, there was an error!', 
      loading: false 
     }); 

     }); 

i punktem końcowym API jest w następującym formacie:

https://www.myapidomain.com

Każda pomoc mile widziana.

Odpowiedz

6

API pobrać wewnętrznie używa NSURLSession który już obsługuje IPv6:

Większość aplikacji nie wymaga żadnych zmian, ponieważ IPv6 jest już obsługiwana przez NSURLSession i CFNetwork API.

Źródło: https://developer.apple.com/news/?id=05042016a

Ponieważ nie używasz adresów IPv4 z API zwrcania powinno być dobrze iść.

Podejrzewam, że jest coś innego (może jakiś kod trzeciej strony?), Który nie współpracuje z tym. Czy firma Apple dostarczyła Ci więcej informacji o tym, co nie działało?

Proponuję podążać za this tutorial, aby przetestować go na swojej stronie i dowiedzieć się, co jest nieprawidłowe.

+1

Wygląda na to, że mój punkt końcowy, czyli cyfrowa kropla oceanu, nie akceptuje połączeń z sieci IPV6. Chociaż moja domena ma przypisany adres IP IPv6. Wydaje się, że z kroplą pojawia się problem z siecią. Mówię do cyfrowego oceanu, aby rozwiązać problem. – meteorite

+0

OK Myślę, że naprawiłem to, włączając obsługę IPV6 na moim serwerze, ale nie rozumiem, dlaczego muszę dokonać takiej modyfikacji. Dlaczego nie mogę połączyć się z serwerem IPV4 w sieci opartej tylko na IPV6? dowolny pomysł? – meteorite

+0

Mam również wątpliwości, że interfejs API pobierania używa wewnętrznie NSURLSession. Dlaczego więc nie powinno to działać domyślnie? Facet, który sprawdził moją aplikację po stronie Apple, powiedział, że aplikacja działała, gdy przełączył się na sieć IPv4, ale nie działał w sieci tylko ipv6. Być może ich sieć nie tłumaczy IPP4 IP na IPV6 lub pobieranie faktycznie nie używa NSURLSession – meteorite

Powiązane problemy