2016-06-28 7 views
9

Ich habe eine App (für IOS) entwickelt, die in reactive native geschrieben wurde, die in IPV4-Netzwerken gut funktioniert. Vor kurzem hat Apple jedoch eine Nachricht gesendet, dass meine App beim Testen in einem IPV6-Netzwerk nicht funktioniert hat. Sie sagten mir, dass ich es auch mit IPV6-Netzwerken kompatibel machen müsste.Wie API-Aufrufe IPV6 kompatibel in react-native mithilfe der Funktion .fetch machen?

Die Frage ist, wie kann ich meine bestehenden API-Aufrufe mit einem IPV6-Netzwerk kompatibel machen?

Meine API verwendet das https-Protokoll und es wird nach Domänenname, nicht eine rohe IP aufgerufen.

Eine Probe fetch nennt das ich verwende, ist:

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

     }); 

und der API-Endpunkt ist in folgendem Format:

https://www.myapidomain.com

Jede Hilfe geschätzt.

Antwort

6

Der Abruf API intern verwendet NSURLSession die bereits IPv6 unterstützt:

Die meisten Anwendungen werden keine Änderungen erforderlich, da IPv6 bereits von NSURLSession und CFNetwork APIs unterstützt wird.

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

Da Sie nicht mit IPv4-Adressen mit der API holen Sie sollte gut sein zu gehen.

Also ich vermute, es gibt etwas anderes (vielleicht einige 3rd Party Code?) Nicht mit diesem zusammen. Hat Apple Ihnen genauere Informationen darüber gegeben, was nicht funktioniert hat?

Ich schlage vor, Sie folgen this tutorial, um es auf Ihrer Seite zu testen und herauszufinden, was falsch ist.

+1

Es scheint, dass mein Endpunkt, der ein digitaler Ozeantropfen ist, keine Verbindungen von IPV6-Netzwerken akzeptiert. Obwohl meine Domäne mit einer IPV6 IP zugewiesen ist. Es scheint ein Netzwerkproblem mit dem Tropfen zu geben. Ich spreche mit Digital Ocean, um das Problem zu lösen. – meteorite

+0

Ok Ich denke, ich habe es behoben, indem ich die IPV6-Unterstützung auf meinem Server aktiviert habe, aber ich verstehe nicht, warum ich eine solche Änderung vornehmen muss. Warum kann ich keine Verbindung zu einem IPV4-Server innerhalb eines IPV6-Netzwerks herstellen? irgendeine Idee? – meteorite

+0

Ich bezweifle auch, dass die Fetch-API intern NSURLSession verwendet. Warum sollte es dann nicht standardmäßig funktionieren? Der Typ, der meine App auf Apple-Seite überprüft hat, sagte, dass die App funktionierte, als er zu einem ipv4-Netzwerk wechselte, aber nicht im ipv6-only-Netzwerk arbeitete. Vielleicht übersetzt ihr Netzwerk IPV4 ips nicht zu IPV6 oder holt tatsächlich nicht NSURLSession – meteorite