Ich entwickle meine iOS-App mit einem lokalen Server, der auf meiner Entwicklungsbox läuft. Beim Testen auf Geräten stelle ich eine direkte Verbindung über eine IP-Adresse her, die über HTTP und nicht über HTTPS erfolgt (daher muss ich mich während der Entwicklung nicht mit selbstsignierten Zertifikaten befassen, die das Gerät sowieso nicht mag).
Ich dachte, dass dies ausreichen würde:
Kann es jedoch nicht zum Laufen bringen, ohne auch NSAllowsArbitraryLoads = YES
Hinzuzufügen. AKA this:
Jetzt muss ich daran denken, dies zu entfernen, wenn ein Produktionsbuild gerollt wird, aber nicht während der Entwicklung ... arg. Sollte das NSExceptionDomains
mit IP-Adressen arbeiten, und wenn nicht, gibt es noch etwas, was ich tun kann, ohne auch NSAllowsArbitraryLoads
zu aktivieren?
Fest codierte IP-Adressen funktionieren in iOS9 nicht. Ich stand auch vor dem gleichen Problem. Versuchte alle Permutationen und Kombinationen der verfügbaren Lösungen. Schließlich musste ein richtiger Domainname verwendet werden.
In iOS9 kommt man mit fest codierten IP-Adressen einfach nicht durch.
kann ich noch etwas tun, ohne
NSAllowsArbitraryLoads
zu aktivieren?
Eine Problemumgehung besteht darin, xip.io zu verwenden, wie durch QJeffR in this Apple Entwicklerforumsthread (erläutert. die von David L in geteilt wurde sein Kommentar ):
Ein DNS-Aufruf an (zum Beispiel) 10.0.1.8.xip.io wird in 10.0.1.8 aufgelöst und ermöglicht die Verwendung der Domäne anstelle der IP-Adresse für
NSExceptionDomains
Schlüssel.
Wie @PanxShaz sagte, können Sie keine fest codierte IP-Adresse eingeben, aber Sie können eine einfache Problemumgehung verwenden:
Öffne dein /etc/hosts
Datei mit Sudo
und fügen Sie einen neuen lokalen Domainnamen für Ihre IP-Adresse hinzu. Beispiel:
192.168.99.100 docker-Host.localhost
Dann leeren Sie Ihren DNS:
dscacheutil -flushcache
Und schließlich verwenden Sie diese neue lokale Domäne in den Sicherheitsausnahmen für den App-Transport.
Wenn Sie auf iOS 10+ abzielen, setzen Sie einfach das Flag NSAllowsLocalNetworking .