iOS開発での「テスト環境版」と「本番環境版」を作る
PROJECTとTARGETS
プロジェクトを作成するとPROJECTとTARGETSというプロジェクトに関わる設定ファイルが作られている。
大まかな内容として、
「PROJECT」プロジェクトの全体設定
「TARGETS」成果物に対する個別設定
*Targetとはビルドした結果得られる成果物のこと
*PROJECTもTARGETSも「project.pbxproj」ファイルを参照している
環境を分けるためにTargetは増やさないべき
Targetを増やすことによって各ターゲットの設定が完全に同じにできていなく、それぞれエラーが出たり出なかったりする可能性があるため、環境の管理をTargetにするべきではない。
Targetを増やすべきケース
「有料版」「無料版」などで成果物を分ける場合
Targetを増やさないべきケース
「開発環境版」「結合環境版」「本番環境版」などリクエスト先が異なる場合
「開発環境版」「本番環境版」などを管理するには
Build SchemeとConfigurationで管理する
手順1. Configurationを追加する
(1-1) PROJECT => Info => Configurations(下図)
(1-2) 「+」をタップ
(1-3) Duplicateする(ここではDebugをDuplicateし「Staging」と設定)
手順2. Schemeを追加する
(2-1) Schemeをタップ(下図)
(2-2)New Scheme...を選択(下図)
(2-3)Scheme名を決める
手順3. Schemeの設定を変更する
(3-1)Schemeをタップし、Edit Scheme...をタップ
(3-2)Run項目のBuild Configurationを手順1で追加したConfigurationに変更する
手順4. Active Compilation Conditionsに追加する(ここでは「Staging」)
手順5. Preprocessor Macrosに追加する(ここでは「STAGING=1」)
手順6. サンプルコード
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
#if DEBUG
guard let url = URL(string: "https://www.yahoo.co.jp/") else { return }
webView.loadRequest(URLRequest(url: url))
#elseif STAGING
guard let url = URL(string: "https://www.apple.com/jp/") else { return }
webView.loadRequest(URLRequest(url: url))
#endif
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}