È ansible disabilitare ATS in iOS 9 solo per l’ambiente di debug?

Sto lavorando su un ambiente di sviluppo senza l’installazione HTTPS. È ansible distriggersre automaticamente ATS solo per la modalità di sviluppo (debug)?

La mia soluzione è di mantenere l’opzione di disabilitazione ATS al valore NO predefinito e aggiungere una fase Script di nuova esecuzione per modificarla nel file Info.plist del bundle dell’app quando si crea l’app.

inserisci la descrizione dell'immagine qui

Questo è il copione:

#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 

Un’altra soluzione. Usando INFOPLIST_PREPROCESS = YES e INFOPLIST_PREPROCESSOR_DEFINITIONS = DEBUG=1 ,

inserisci la descrizione dell'immagine qui

può essere pre-elaborazione condizionale come il codice C usando #ifdef o #if direttamente in Info.plist.

 UIMainStoryboardFile Main #if DEBUG NSAppTransportSecurity  NSAllowsArbitraryLoads   #endif UIRequiredDeviceCapabilities  

Contro: Imansible aprire l’editor dell’elenco delle proprietà di Xcode perché non è XML ben formato 🙁

Sì, è ansible configurare le impostazioni del progetto in modo da utilizzare file Info.plist diversi per Debug, Release o qualsiasi configurazione utilizzata nel progetto (in modo simile al modo in cui sono impostati i profili di provisioning), quindi nel proprio debug plist è ansible disabilitare completamente ATS.

Vai a Progetto -> Il tuo objective -> Impostazioni di costruzione -> File Info.plist