NSAllowsArbitraryLoads
で完全にATSを無効にするソリューションが与えられ、SOにここに受け入れられ、多くの場合であるが、それは開発者が知っておくべきいくつかの結果が付属しています。まず、現在のところ(2017年8月現在)、アップルは開発者がその設定を使用して自分が選んだATSを無効にすることを許可しています。しかし、アップルは、開発者がATSを完全にオフにすることを正当化する必要があると述べている。 Appleは当初、2017年1月に正当化の必要性を強要し始めたが、それを無期限に押し戻した。私にとっては、Appleが新しいポリシーの施行を開始したときと同じように、開発者がNSAllowsArbitraryLoads
の設定を引き続き使用する危険性があるため、開発者がアプリの重要な修正をアプリストアに送信できない可能性があります。
NSAllowsArbitraryLoadsForMediaContent
をiOSの10以降では、Appleがメディアコンテンツを除外するための新しいキーNSAllowsArbitraryLoadsForMediaContent
を提供してきました。具体的に周りの動画をストリーミングあなたの質問のために、あなたの代わりに使用できるオプションのカップルがあります
ATSの要件からそのキー(同様のNSAllowsArbitraryLoadsForWebContent
と同様)は、アップルのガイドラインに基づいて正当化する必要はありません。
このキーが唯一のiOS 10で追加されましたので、あなたのアプリはiOS搭載9のデバイス上で実行されているサポートする必要がある場合は、それが問題となります。幸運にも、Appleはこれを行う方法も提供しています。 iOSの9とiOS 10+デバイスをサポートするために、あなたはあなたのplistに両方NSAllowsArbitraryLoadsForMediaContent
とNSAllowsArbitraryLoads
を追加します。 iOS9はNSAllowsArbitraryLoadsForMediaContent
を知っていないので、NSAllowsArbitraryLoads
キーのみを認識し、iOS 9デバイスのすべてのATS準拠チェックを無効にします。 iOS10は新しいキーについて知っているため、 'NSAllowsArbitraryLoads'を無視し、メディアストリームのATS準拠チェックのみを無効にします。
iOS9デバイスをサポートする必要がある場合、これはアップルの推奨するアプローチなので、今後、いつの間にか正当化を提供する必要がある場合は、Appleが推奨している方法で、https以外のストリーミングiOS 9端末で少なくとも、彼らはあなたがATSにサービスを提供できるようにしようとしているのを見るでしょう。
NSExceptionDomains
あなたのメディアは、すべてのATSの要件をサポートしていないことに常駐するすべてのドメインを知っているか、そしてNSAllowsArbitraryLoadsForMediaContent
アプローチがあなたのために動作しない場合、私はNSExceptionDomains
を使用することをお勧めします次。ここでも、アップルは、アプリのユーザーがサーバー接続のセキュリティを守るために必要な露出の量を制限しようとしていることを示しています。 Appleの正当な理由を後で提供する必要がある場合は、ドメインがあなたの管理下にないことを伝えるだけで、残りのアプリケーションの通信はATS準拠チェックによって保護されます。この時点で
NSAllowsArbitraryLoads
、この設定を使用する必要がありますいくつかのアプリがあります。しかし、それらは基本的にユーザーが入力したサーバーを許可するアプリケーションに限定する必要があります(開発者は、アプリケーションと通信する必要のあるサーバーがわからないため、これらのアプリケーションはほとんどありません。悲しいことに、私はそのアドバイスに従って盲目的にAppleの量がAppleが正当化プロセスを課している可能性が高いと考えています。
NSAllowsArbitraryLoads
の設定を使用した場合でも、NSExecptionドメインを使用して、ATS準拠のドメインの** ATS準拠チェックを*に戻す例外を追加することがベストプラクティスです。あなたがコントロールする接続。
したがって、サーバー接続を本当に知ることができないアプリの最後の手段としてNSAllowsArbitraryLoads
を使用してください。