私たちの iOS アプリケーションはカスタム プロトコル (NSURLProtocol) を使用して、UIWebview が必要とする特定のデータのロードを直接管理します。これは、XCode 7 を使用する iOS 9 までは正常に機能していました。
ここで、メイン サイトは HTTPS を使用して読み込まれるため、カスタム プロトコル リソースが参照されると UIWebview はエラーをスローします。アプリはすでに「Allow Arbitrary Loads」を使用してビルドされています。これは、それを必要とするものが他にもいくつかあるためです。これは、NSTemporaryThirdPartyExceptionallowsInsecureHTTPLoads を継承していると思われます。
カスタム プロトコルに HTTPS からアクセスできることを iOS 9 に納得させる方法はありますか? 注 - UIWebview では iframe などは使用しません。これらのリソースは Ajax/XHR を使用して要求され、アプリの NSURLProtocol が呼び出されて、データの読み込みと応答の返しを引き継ぎます。
カスタム スキームは URL の種類にも記載されていますが、これによって動作が変わることはないようです (in または out、同じエラー)。具体的なエラーは次のとおりです。
[ブロック] https://example.com/path/redactedのページは、mycustomprotocol://different.example.com/path/redacted からの安全でないコンテンツを表示することを許可されていませんでした。
編集: Xcode 6.4 をダウンロードし、アプリを再構築しました。iOS 9.x でも問題なく動作するようです。カスタム プロトコルに問題はありません。明らかに、これは長期的な解決策ではありません。Xcode 7以降で解決する方法について、誰かがまだ洞察を持っていることを願っています。