2015-07-06 2 views
2

Я использую Чарльз для отладки моих запросов и ответов приложений, и он не использует последнюю версию TLS (что делает iOS 9). Есть ли способ обновить это программно, чтобы я мог включить его только для локальных сборок, выполненных через Xcode? У меня есть сервер сборки Jenkins, которому все еще нужно использовать новую версию TLS.Можете ли вы модифицировать NSExceptionMinimumTLSVersion в программном приложении App Info.plist?

ответ

1

Это немного грязно, но вы можете использовать инструмент командной строки PlistBuddy в шаге Run Script для этого. Бесполезно, потому что он оставляет фактический info.plist измененным, так что вы увидите его в истории git.

В приведенном ниже скрипте будет добавлено исключение только на сборках DEBUG и удалены любые исключения ATS в противном случае. Вы можете отредактировать его, чтобы быть более конкретным, или просто всегда добавлять/удалять флаг NSAllowsArbitraryLoads.

# Remove exception for all builds 
/usr/libexec/PlistBuddy -c "Delete :NSAppTransportSecurity" ${INFOPLIST_FILE} 2>/dev/null 
exitCode=$? #Supresses failure if key doesn't exist 

# Add exception for Debug builds 
if [ "${CONFIGURATION}" == "Debug" ] 
then 
/usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity dict" ${INFOPLIST_FILE} 
/usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains dict" ${INFOPLIST_FILE} 
/usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:<host> dict" ${INFOPLIST_FILE} 
/usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:<host>:NSIncludesSubdomains bool true" ${INFOPLIST_FILE} 
/usr/libexec/PlistBuddy -c "Add :NSAppTransportSecurity:NSExceptionDomains:<host>:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" ${INFOPLIST_FILE} 
fi 

Подробнее http://product.reverb.com/2015/06/29/ios-9-and-charles-proxy/

+0

Возможность изменения параметров ОВД во время выполнения? – lostintranslation