2015-09-24 25 views
2

在我們的項目中,我們關閉了HTTPS請求,並將它們作爲HTTP發送,以便在本地計算機上針對API進行內部測試。 要做到這一點,我添加此代碼到info.plist中Xcode構建設置 - 從生產版本的plist中移除代碼

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

這使得應用與HTTP請求運行。顯然,這對於現場環境不利,也不太可能獲得應用商店的批准;所以我想在我們的生產構建目標中設置代碼,以便自動刪除這些違規代碼,以免我們不小心將其丟失。我已經做了一些搜索,但似乎無法在網上找到任何建議。

回答

0

添加一個用戶定義的構建設置,如ALLOWS_ARBITARARY_LOADS,然後將其值更改爲YesNo用於您的配置。然後,更改信息的plist條目

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <string>$(ALLOWS_ARBITARARY_LOADS)</string> 
</dict> 

注意:這裏NSAllowsArbitraryLoads添加一個字符串,因爲我們無法plist中添加布爾或數值ROM構建設置。儘管它是一個字符串,但它的布爾值將是布爾值是或否,因爲信息plist正在作爲字典。 Reference

+5

分配NSAllowsArbitraryLoads是一個字符串值,失敗所以現在看來​​,這必須是一個布爾因此用戶定義的值似乎並沒有工作。你有使用一個字符串工作嗎? – Steve

+0

[SE notifications sucks] –

+0

不確定它是否適用於NSAllowsArbitraryLoads的字符串。它僅適用於用戶定義的鍵...... :( –

1

這樣做的最好方法是創建一個當前應用程序目標的副本,並將其命名爲'MyApp PROD'並將您的現有目標命名爲'MyApp DEV'。現在這兩個目標都有自己的.plist文件。在'MyApp DEV'plist文件中,您將所需的值設置爲開發所需的值,並且在'MyApp PROD'plist文件中,您不保留生產應用程序中不需要的那些值。

使用不同的目標,每個環境(如DEV,UAT和PROD)爲您提供了其他優點,如:

1.You可以像特定於該目標代碼簽名證書及預置描述文件不同的目標不同的構建設置這樣你就不必一次又一次改變它們了。

2.您可以關聯特定目標所需的資源和實現文件。

等等。 1 2 3 4 5 6 7 8

+0

)管理不同的目標似乎有點負擔(至少爲此目的),您可能想嘗試在構建階段使用腳本來更改基於配置的設置,檢查此:http://stackoverflow.com/questions/32390228/is-it-possible-to-disable-ats-in-ios-9-just-for-debug-environment –

相關問題