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

前端 未结 3 1771
忘掉有多难
忘掉有多难 2020-12-01 13:54

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

相关标签:
3条回答
  • 2020-12-01 14:31

    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

    0 讨论(0)
  • 2020-12-01 14:49

    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
    
    0 讨论(0)
  • 2020-12-01 14:49

    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 :(

    0 讨论(0)
提交回复
热议问题