当前位置: 动力学知识库 > 问答 > 编程问答 >

ios9 - Is it possible to disable ATS in iOS 9 just for debug environment?

问题描述:

I'm working on a development environment without HTTPS setup. Is it possible to automatically disable ATS just for the development (debug) mode?

网友答案:

My solution is to keep ATS disable option at the default NO value and add a New Run Script Phase to change it in the app bundle's Info.plist when building the app.

This is the 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
网友答案:

Another solution. By using INFOPLIST_PREPROCESS = YES and INFOPLIST_PREPROCESSOR_DEFINITIONS = DEBUG=1,

it can be conditional preprocess like C code using #ifdef or #if directly in Info.plist.

<key>UIMainStoryboardFile</key>
<string>Main</string>
#if DEBUG
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
#endif
<key>UIRequiredDeviceCapabilities</key>
<array>

Cons: Unable to open Xcode's property list editor because it is not well-formed XML :(

网友答案:

Yes, you can configure your project settings to use different Info.plist file for Debug, Release or whatever configuration you use in your project (similar to the way Provisioning Profiles are set), so in your Debug plist you can disable ATS totally.

Go to Project -> Your Target -> Build Settings -> Info.plist File

分享给朋友:
您可能感兴趣的文章:
随机阅读: