web-dev-qa-db-ja.com

App Transport SecurityによってブロックされているURLを確認するにはどうすればよいですか?

IOSアプリをiOS 9にアップグレードしています。安全でないURLがいくつかあり、App Transport Securityにいくつかの例外が必要です。私が知っている2つを追加しましたが、次のような警告が発生しています。

App Transport Securityは安全でないため、クリアテキストHTTP(http://)リソースのロードをブロックしました。一時的な例外は、アプリのInfo.plistファイルで構成できます。

どのURLがブロックされているかを知る必要があるので、それらをInfo.plistに追加できます。おそらくURLは画像またはメディアファイルです。ロードしないと判断したURLをシステムログに記録するにはどうすればよいですか?

39
Micah Hainline

Editor Note:@jessedcは、公式のAppleドキュメントへのリンクへのリンクの下のコメントで指摘しています: https://developer.Apple.com/library/content/qa/qa1887/_index.html

わかりました、私は嫌いな答えがあります!私はまだもっと良いものを求めています。

私のapplication:didFinishLaunchingWithOptions:メソッド追加した行

setenv("CFNETWORK_DIAGNOSTICS", "3", 1);

その後、アプリを実行すると、ログで次のようなエントリが見つかります。

2015-07-02 15:27:56.152 MyApp[45041:9125662] CFNetwork diagnostics log file
created at: /Users/micah.hainline/Library/Developer/CoreSimulator/Devices/
11BCA581-5F5F-494D-932A-2ECFCA33EA93/data/Containers/Data/Application/
9ACC6941-8039-4B86-B5E8-A6C66E2AD520/Library/Logs/CrashReporter/CFNetwork_com
.myapp.MyApp_45041.nwlrb.log

そのファイルを開くと、ネットワークで発生したすべてのことに関する膨大な数のログエントリがあります。そのファイルでkCFErrorDomainCFNetworkを検索し、失敗したネットワーク要求のログを取得します。これを使用して、システムがヒットしようとしたURLを確認し、そのURLをApp Transport Securityの例外に追加できます。

67
Micah Hainline

受け入れられた答えは正しいですが、Xamarin iOSでこれを行う場合は、使用する必要があります。

Environment.SetEnvironmentVariable("CFNETWORK_DIAGNOSTICS", "3", EnvironmentVariableTarget.Process);

また、ログファイルを探している場合は、シミュレーターマネージャーなどを使用して、正しい場所を簡単に見つけることができます( https://github.com/tue-savvy/SimulatorManager )。

2
PaulB