2016-06-28 52 views
9

Ho sviluppato un'applicazione (per IOS) scritta in react native che funziona bene nelle reti IPV4. Tuttavia, recentemente Apple ha inviato un messaggio dicendo che la mia app non ha funzionato durante il test su una rete IPV6. Mi hanno detto che dovevo renderlo compatibile anche con le reti solo IPV6.Come rendere le chiamate API IPV6 compatibili in react-native usando la funzione .fetch?

La domanda è: come posso rendere le mie chiamate API esistenti compatibili con una rete IPV6?

La mia API utilizza il protocollo https e viene richiamata dal nome di dominio, non da un IP non elaborato.

Un campione fetch chiama che uso è:

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 
     }); 

     }); 

e l'endpoint API è nella seguente formato:

https://www.myapidomain.com

alcun aiuto apprezzato.

risposta

6

L'API prendere utilizza internamente NSURLSession che supporta già IPv6:

maggior parte delle applicazioni non richiede alcuna modifica perché IPv6 è già supportato da NSURLSession e le API CFNetwork.

Fonte: https://developer.apple.com/news/?id=05042016a

Dal momento che non si sta usando indirizzi IPv4 con l'API recupero si dovrebbe essere pronti per partire.

Quindi sospetto che ci sia qualcos'altro (forse qualche codice di terze parti?) Che non collabora con questo. Apple ti ha fornito maggiori dettagli su ciò che non funzionava?

Ti suggerisco di seguire this tutorial per testarlo dalla tua parte e scoprire cosa non è corretto.

+1

Sembra che il mio endpoint che è una goccia digitale dell'oceano non accetti le connessioni dalle reti IPV6. Sebbene il mio dominio sia assegnato con un IP IPV6. Sembra esserci un problema di rete con la goccia. Sto parlando all'oceano digitale per risolvere il problema. – meteorite

+0

Ok penso di averlo risolto abilitando il supporto IPV6 sul mio server, ma non capisco perché devo fare una modifica del genere. Perché non riesco a collegarmi a un server IPV4 da una rete solo IPV6? qualche idea? – meteorite

+0

Dubito anche che l'API di recupero utilizzi internamente NSURLSession. Perché perché non dovrebbe funzionare di default allora? Il tizio che ha recensito la mia app sul lato Apple ha detto che l'app stava funzionando quando è passato a una rete IPv4 ma non ha funzionato nella rete solo IPv6. Forse la loro rete non traduce IPV4 IPS in IPV6 o recupera in realtà non utilizza NSURLSession – meteorite