Как я могу определить, какой URL-адрес блокируется приложением Transport Transport Security? - программирование
Подтвердить что ты не робот

Как я могу определить, какой URL-адрес блокируется приложением Transport Transport Security?

Я обновляю приложение iOS для iOS 9, и у меня есть некоторые URL-адреса, которые не являются безопасными, и мне нужно несколько исключений из App Transport Security. Я добавил два, о которых я знаю, но теперь есть некоторые предупреждения:

App Transport Security заблокировала загрузку ресурса с открытым текстом HTTP (http://), поскольку она небезопасна. Временные исключения могут быть настроены через ваш файл Info.plist приложения.

Мне нужно знать, какие URL-адреса заблокированы, поэтому я могу добавить их в Info.plist, это, вероятно, изображения или мультимедийные файлы. Как я могу заставить систему регистрировать URL-адреса, которые он решил не загружать?

4b9b3361

Ответ 1

Примечание редактора: @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 к исключениям для безопасности приложений на транспорте.

Ответ 2

Принятый ответ правильный, но если вы делаете это на Xamarin iOS, вам нужно будет использовать;

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

Кроме того, если вы ищете файл журнала, используйте что-то вроде диспетчера симуляторов, чтобы легче найти правильное местоположение (https://github.com/tue-savvy/SimulatorManager).