HTTPSを設定しない開発環境で作業しています。開発(デバッグ)モードのためだけにATSを自動的に無効にすることは可能ですか?
私の解決策は、ATS無効化オプションをデフォルトのNO値に維持し、新しい実行スクリプトフェーズを追加して、アプリのビルド時にアプリバンドルのInfo.plistで変更することです。
これはスクリプトです:
#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
別の解決策。 INFOPLIST_PREPROCESS = YES
およびINFOPLIST_PREPROCESSOR_DEFINITIONS = DEBUG=1
を使用することにより、
info.plistで直接#ifdef
または#if
を使用するCコードのような条件付き前処理にすることができます。
<key>UIMainStoryboardFile</key>
<string>Main</string>
#if DEBUG
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
#endif
<key>UIRequiredDeviceCapabilities</key>
<array>
短所:整形式のXMLではないため、Xcodeのプロパティリストエディタを開くことができません:(
はい。デバッグ、リリース、またはプロジェクトで使用する構成(プロビジョニングプロファイルの設定方法と同様)に異なるInfo.plistファイルを使用するようにプロジェクト設定を構成できるため、デバッグplistでATSを完全に無効にすることができます。
プロジェクト->ターゲット->ビルド設定-> Info.plistファイルに移動します