iOS 多環(huán)境支持

  • 首先新建一個multiBuild的新項目
  • 我們選中項目 --> PROJECT --> Info --> Configurations中可以看到Xcode已經幫我們配置了Debug和Release兩套環(huán)境
  • 實際開發(fā)中只有這兩套環(huán)境是不夠的,比如通常我們還需要一套預發(fā)布的生產環(huán)境(習慣叫做Staging)。怎么創(chuàng)建Staging環(huán)境呢?其實很簡單,只需要點擊Configurations下面的+號就會有個小彈窗讓你選擇是復制Debug還是Release環(huán)境,這時我們根據(jù)需要選擇就好,比我這里選擇了Debug,并給新的環(huán)境命名為Staging。
  • 有了Staging環(huán)境我們怎么用起來? 比如我們要支持三套網(wǎng)絡環(huán)境Debug、Staging、Release。我們可以在項目--> TARGET --> Build Setting 中搜索flags,然后找到 Swift Compiler - Custom Flags

上圖我們可以看到Debug 和 Staging 環(huán)境中已經幫我們定義了一個DEBUG 標志,這里我們把Staging中的DEBUG標志刪掉,因為我們不需要它,它是我們創(chuàng)建Staging環(huán)境的時候從Debug環(huán)境中復制而來的,然后我們在Staging環(huán)境中添加一個STAGING的標志

  • 然后在網(wǎng)絡請求中我們就可以根據(jù)是Debug、Staging、Release來設置不同的url了
struct ContentView: View {
     var baseUrl: String {
        #if DEBUG
            return "http://debug"
        #elseif STAGING
            return "http://staging"
        #else
            return "http://release"
        #endif
    }
    
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text(baseUrl)
        }
        .padding()
    }
}

這樣我們運行或者打包時,就是根據(jù)不同的Build Configuration來獲取相應的baseUrl了。具體使用如下:
在Xcode 頂部點擊項目名,選擇 Edit Scheme,然后在 Run --> Info --> Build Configuration 下選擇 Debug

然后運行項目,運行結果如下:


同上,把 Build Configuration 選擇Staging

運行結果如下:

同上,把 Build Configuration 選擇Release

運行結果如下:


這樣多套網(wǎng)絡環(huán)境就配置好了


其他運用

app 升級跳轉的運用
  • 比如當用點擊升級app的時候,如果是Release版的,跳轉到App Store 相應地址;如果是Staging版的,跳轉到內部分發(fā)網(wǎng)站。 這種情況我們就可以自定一個Setting, 具體如下: 項目 --> TARGET --> Build Settings 左上角+號,選擇Add User-Defined Setting

這樣在User-Defined下就會添加一個NEW_SETTING

image.png

把新建的這個NEW_SETTING改成APP_STORE_URL,然后在Debug、Release、Staging中分別設置不同的URL,如下:

然后我們在項目的info.plist 中添加一個APP_STORE_URL的key,對應Value就是我們設置的APP_STORE_URL

這樣我們就可以在獲取跳轉鏈接的時候直接從info.plist中取了,會根據(jù)不同的環(huán)境取到相應的值

let appStoreUrlString = Bundle.main.object(forInfoDictionaryKey: "APP_STORE_URL")
  • 同樣其他的不同環(huán)境配置不同內容的都可以用上面的方式處理,比如不同環(huán)境Wechat SDK 的id不一樣,或者不同環(huán)境UMeng SDK 的id不一樣,都可以用這種方式配置
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容