ただ、正当な理由がない限り、Appleは、2016年12月31日後に提出されたアプリのためのATSを無効にするには、ATSの例外を使用しているアプリが拒否される理由を明確にするアプリ例外を使用する必要があります。私たちはまだAppleが受け入れる理由をまだ知りません。
残念ながら、ローカルネットワークリソースがiOS 9のATSによってブロックされるという素晴らしいソリューションはありません。私が見る限り、2つの選択肢があります。
iOSの9のサポートを継続し、グローバルATSの例外を追加し、あなたが2016年12月31日後にアプリを提出する際に必要に地元のiOS 9とアクセスをサポートするために、Appleはあなたの正当性を受け入れることを願っていますATSを無効にしたネットワークリソース。 2014年1月1日までは、Appleが合理的であると認める種類の正当性を知るのは難しいだろうが、AppleはATS例外のアプリケーション使用を正当化するプロセスがあることを明確にした。あなたがこのルートに行くならば、私は1月初めにATS例外を使ってアプリケーションに小さな更新をプッシュしようとしています。
iOS 9のサポートを無効にして、ブランケットATS例外(NSAllowArbitratyLoads
)を削除し、代わりにNSAllowsLocalNetworking
例外を使用して、ローカルネットワークトラフィックでのみATS保護をオフにします。これはiOS9ではサポートされていないため、新しいアプリをiOS 10にする必要があります。基本的に、NSAllowsLocalNetworking
plistエントリのみがtrueに設定されたiOS9デバイスのローカルトラフィックは、ATSによってブロックされます。あなたのクライアントベースによっては、これが可能かもしれません。 iOS 9ユーザーは、iOS 10のリリース前でもアプリの最後のバージョンを手に入れることができます。
編集:
のiOS 9に後方互換性を可能にしながら、Appleは、iOSの10のアプリがより安全にできるようにするためにiOSの10でいくつかのカスタムbehavourを使用しているようにあなたが含まれている場合ので、それが見えますあなたのinfo.plistにNSAllowsArbitraryLoads
とNSAllowsLocalNetworking
の両方がある場合、iOS9はNSAllowsArbitraryLoads
のエントリだけを認識し、すべてのトラフィックを許可します(セキュリティの観点からは大したものではありませんが、ローカルネットワークトラフィックでは機能します)。 iOS 10では、NSAllowsLocalNetworking
を使用すると、iOS 10はNSAllowsArbitraryLoads
エントリを無視します。これにより、ローカル接続以外の接続に対してATSが強制され、ローカル接続が許可されます。明らかに、あなたはiOS 9と10の両方であなたのアプリケーションをテストすべきですが、これはまだiOS 9をサポートする必要がある場合、セキュリティの観点からは理想的です。あなたはまだAppleに正当性を提示する必要がありますこの正確なシナリオを処理するためにアップルがこの機能を搭載したのであれば、私は下位互換性が正当化されていると賭けても構わないと思う。Appleのdocumentationから
:iOSの10で
以降、およびMacOSの10.12と、次のキーのいずれかのアプリの Info.plistファイルに存在している場合は、後で、このキー の値は無視されます:
NSAllowsArbitraryLoadsForMedia
NSAllowsArbitraryLoadsInWebContent
NSAllowsLocalNetworking
最近の編集に感謝します。非常に参考になりました。 –