Je développe mon application iOS à l'aide d'un serveur local fonctionnant sur ma boîte de développement. Lors des tests sur les appareils, je me connecte directement via une adresse IP, qui est via HTTP et non HTTPS (donc je n'ai pas à gérer les certificats auto-signés pendant le développement, ce que l'appareil n'aimerait même pas de toute façon).
J'ai pensé que ce serait suffisant:
Cependant, ne peut pas le faire fonctionner sans ajouter également NSAllowsArbitraryLoads = YES
, Alias ceci:
Maintenant, je devrai me rappeler de supprimer cela lors du lancement d'une génération de production mais pas pendant le développement ... arg. Le NSExceptionDomains
doit-il fonctionner avec des adresses IP, et sinon, puis-je faire autre chose sans activer également le NSAllowsArbitraryLoads
?
L'adresse IP codée en dur ne fonctionnera pas dans iOS9. J'ai également fait face au même problème. J'ai essayé toutes les permutations et combinaisons de solutions disponibles. Enfin, a dû utiliser un nom de domaine approprié.
Donc, NON Dans iOS9, vous ne pouvez tout simplement pas vous en sortir avec des adresses IP codées en dur.
puis-je faire autre chose sans activer également
NSAllowsArbitraryLoads
?
Une solution de contournement consiste à utiliser xip.io , comme expliqué par QJeffR in this Apple Thread Forums Developer ( qui a été partagé par David L dans son commentaire ):
Un appel DNS à (par exemple) 10.0.1.8.xip.io se résoudra en 10.0.1.8 , permettant l'utilisation du domaine au lieu de l'adresse IP pour le
NSExceptionDomains
clé.
Comme @PanxShaz l'a dit, vous ne pouvez pas mettre une adresse IP codée en dur mais vous pouvez utiliser une solution de contournement simple:
Ouvrez votre /etc/hosts
fichier en utilisant Sudo
et ajoutez un nouveau nom de domaine local pour votre adresse IP. Exemple:
192.168.99.100 docker-Host.localhost
Rincez ensuite votre DNS:
dscacheutil -flushcache
Et enfin, utilisez ce nouveau domaine local dans vos exceptions de sécurité de transport d'application.
Si vous ciblez iOS 10+, définissez simplement l'indicateur NSAllowsLocalNetworking .