Что такое код -1200
NSURLErrorDomain — семейство сетевых ошибок системы Apple, которые получают приложения при работе с URL. Код -1200 соответствует константе secure connection failed: попытка установить защищённое TLS-соединение не удалась. Пользователь видит его в приложениях, а разработчик — в журналах, иногда вместе с более подробным кодом стека потоков.
Число само по себе только указывает на класс проблемы. Причина может быть у сервера, в сети или в конфигурации приложения.
Если ошибка встречается в стороннем приложении и не воспроизводится в Safari, обратитесь к разработчику приложения: скорее всего, оно использует иной адрес или закрепляет сертификат.
Откуда он берётся
У пользователей код чаще встречается по бытовым причинам: неверное время устройства, сеть с перехватом трафика, профили конфигурации и VPN-приложения, устаревшая система. Приложения Apple требуют от серверов современной конфигурации TLS, поэтому старый сервер, который прежде работал, вдруг перестаёт подключаться.
У разработчиков список расширяется: сертификат сервера просрочен или не подходит к имени, цепочка неполная, приложение закрепляет сертификат (pinning) и получает другой, включена политика транспортной безопасности, запрещающая слабые параметры. Отдельно бывает несовместимость версии TLS у тестового сервера.
Проверка для пользователя
Проверьте дату и время: включите автоматическую установку. Отключитесь от общественного Wi-Fi и повторите попытку по сотовой сети. Откройте адрес сервиса в Safari: если и там ошибка безопасного соединения, проблема в сервере или сети, а не в приложении.
Отключите профили VPN и блокировщики контента на время проверки. Обновите систему и приложение, перезапустите его и устройство. Сброс сетевых настроек можно оставить на потом, потому что он удаляет сохранённые сети.
Если проблема только в одном приложении, сообщите в поддержку: вероятно, оно использует собственный адрес сервера, который сломался.
Разбор для разработчика
Сначала выясните, какая проверка не проходит: сертификат, версия, шифры или привязка. В журналах ищите более конкретный код, расположенный ниже -1200, например про доверие к сертификату. Проверьте сервер анализатором TLS: цепочка, срок, имена, версии.
Убедитесь, что тестовое окружение не использует самоподписанный сертификат без исключения в конфигурации приложения. Проверьте, соответствует ли домен запроса тому, что в сертификате, и не менялся ли сертификат, если приложение закрепляет его. Исключения для небезопасных соединений допустимы только в отладочных сборках.
Что не нужно делать
Не отключайте проверки безопасности во всём приложении, чтобы «убрать ошибку»: это оставляет пользователей без защиты, а проблему сервера не решает. Не разрешайте небезопасные соединения глобально в настройках приложения без крайней необходимости.
Правильный выход — исправить конфигурацию сервера: современный TLS, полная цепочка, актуальный сертификат. Тогда ошибка исчезает у всех, и не требуется ни обновление приложения, ни ручные действия пользователей. Исправление на сервере решает проблему для всех пользователей сразу и не создаёт дыр в безопасности.
Родственные коды и как их различать
Рядом с -1200 в журналах часто встречаются -1202, -1201 и -1205. Они описывают более конкретные проблемы с сертификатом: недоверие к издателю, неверная дата, отклонение клиентского сертификата. Если вы видите такой код вместе с -1200, опирайтесь на него: он точнее.
Для разработчика полезно подключить расширенную запись сетевых событий и посмотреть, какая проверка не пройдена. Это заметно экономит время по сравнению с гаданием. Пользователю достаточно знать, что цепочка «-1200 плюс сообщение про сертификат» ведёт к проверке времени, сети и сервера, а цепочка без такого сообщения чаще указывает на версию протокола или шифры.
Порядок проверки коротко: Время и дата; смена сети; открытие сервиса в Safari; отключение VPN и профилей; обновление системы и приложения; проверка сервера анализатором TLS; при разработке — просмотр вложенного кода ошибки в журнале. Такая последовательность отделяет проблемы устройства от проблем сервера и позволяет быстро передать исчерпывающую информацию тому, кто будет исправлять.