開発ボックスで実行されているローカルサーバーを使用してiOSアプリを開発しています。デバイスでテストするときは、HTTPSではなくHTTP経由のIPアドレスを介して直接接続します(そのため、開発中に自己署名証明書を処理する必要はありません。デバイスはとにかく好きではありません)。
これで十分だと思いました:
ただし、NSAllowsArbitraryLoads = YES
を追加せずに機能させることはできません。別名:
ここで、本番ビルドをロールするときはこれを削除する必要がありますが、開発中は削除しないでください... arg。 NSExceptionDomains
はIPアドレスで動作しますか。動作しない場合、NSAllowsArbitraryLoads
を有効にせずに他にできることはありますか?
ハードコードされたIPアドレスはiOS9では機能しません。私も同じ問題に直面しました。利用可能なソリューションのすべての順列と組み合わせを試しました。最後に、適切なドメイン名を使用する必要がありました。
だから、いいえ。iOS9では、ハードコードされたIPアドレスで逃げることはできません。
NSAllowsArbitraryLoads
も有効にせずにできることは他にありますか?
回避策の1つは、 xip.io を使用することです。これは QJeffR in this Apple Developer Forums thread ( 彼のコメント )でDavid Lによって共有されました:
(たとえば) 10.0.1.8.xip.io へのDNS呼び出しは 10.0.1.8 に解決され、
NSExceptionDomains
キーにIPアドレスの代わりにドメインを使用できます。
@PanxShazが言ったように、ハードコードされたIPアドレスを入力することはできませんが、簡単な回避策を使用できます。
/etc/hosts
ファイルをSudo
を使用して、IPアドレスの新しいローカルドメイン名を追加します。例:
192.168.99.100 docker-Host.localhost
次に、DNSをフラッシュします。
dscacheutil -flushcache
最後に、アプリトランスポートセキュリティの例外でこの新しいローカルドメインを使用します。
IOS 10以降をターゲットにしている場合は、 NSAllowsLocalNetworking フラグを設定するだけです。