Я работаю над средой разработки без установки HTTPS. Можно ли автоматически отключить ATS только для режима разработки (отладки)?
Можно ли отключить ATS в iOS 9 только для среды отладки?
Ответ 1
Мое решение состоит в том, чтобы сохранить параметр отключения ATS по умолчанию по умолчанию и добавить новую фазу Script, чтобы изменить ее в наборе приложений Info.plist при создании приложения.
Это script:
#Disables ATS in debug builds.
INFOPLIST="${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
case "${CONFIGURATION}" in
"Release"|"Adhoc")
/usr/libexec/PlistBuddy -c "Set :NSAppTransportSecurity:NSAllowsArbitraryLoads NO" "${INFOPLIST}"
;;
"Debug")
/usr/libexec/PlistBuddy -c "Set :NSAppTransportSecurity:NSAllowsArbitraryLoads YES" "${INFOPLIST}"
;;
esac
Ответ 2
Другое решение. Используя INFOPLIST_PREPROCESS = YES
и INFOPLIST_PREPROCESSOR_DEFINITIONS = DEBUG=1
,
это может быть условный препроцесс, такой как код C, используя #ifdef
или #if
непосредственно в Info.plist.
<key>UIMainStoryboardFile</key>
<string>Main</string>
#if DEBUG
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
#endif
<key>UIRequiredDeviceCapabilities</key>
<array>
Минусы: невозможно открыть редактор списка свойств Xcode, поскольку он не является корректным XML: (
Ответ 3
Да, вы можете настроить параметры проекта для использования другого файла Info.plist для Debug, Release или любой другой конфигурации, которую вы используете в своем проекте (аналогично настройке профилей Provisioning Profiles), поэтому в вашем модуле Debug вы можете отключить ATS полностью.
Перейдите в Проект → Ваша цель → Настройки сборки → Файл Info.plist