ios9 - ¿Es posible deshabilitar ATS en iOS 9 solo para el entorno de depuración?
xcode7 (3)
Mi solución es mantener la opción de desactivación de ATS en el valor NO predeterminado y agregar una Nueva Fase de Script de Ejecución para cambiarla en la lista de información del paquete de aplicaciones al crear la aplicación.
Este es el guión:
#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
Estoy trabajando en un entorno de desarrollo sin configuración HTTPS. ¿Es posible deshabilitar automáticamente ATS solo para el modo de desarrollo (depuración)?
Otra solución. Al usar INFOPLIST_PREPROCESS = YES
y INFOPLIST_PREPROCESSOR_DEFINITIONS = DEBUG=1
,
puede ser preprocesamiento condicional como código C usando #ifdef
o #if
directamente en Info.plist.
<key>UIMainStoryboardFile</key>
<string>Main</string>
#if DEBUG
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
#endif
<key>UIRequiredDeviceCapabilities</key>
<array>
Contras: no se puede abrir el editor de la lista de propiedades de Xcode porque no está bien formado XML :(
Sí, puede configurar los ajustes de su proyecto para usar un archivo Info.plist diferente para Debug, Release o cualquier configuración que use en su proyecto (similar a la forma en que se configuran los perfiles de provisión), por lo que en su lista de debug puede deshabilitar el ATS por completo.
Vaya a Proyecto -> Su destino -> Configuraciones de compilación -> Archivo Info.plist