【Xcode9】Targetを追加して開発と本番で処理を分岐させる方法【iOS】【Objective-C】

アプリをリリースするにあたり、本番と開発でサーバーへの向き先の変更や使用しているライブラリのAppKeyなどの変更を手動でやっていましたが、本番へのデプロイ時に向き先の変更ミスが起こると危ないのでターゲットを増やして管理したい場合があります。

今回はターゲットの増やし、本番と開発で処理を分岐させ、別アプリになるように設定します。

Targetの追加方法

まずTargetを増やしたいプロジェクトを開き、TARGETSの欄から複製したいTargetを選択し、右クリックで「Duplicate」してください。

    

複製が完了すると「Target copy」というのがTARGETSの欄に
「Target copy-Info.plist」というのがプロジェクトファイル内にできます。

上記2つをわかりやすい名前に変更しましょう。

私は「TargetDev」と「Info-Dev.plist」に変更しました。

変更が終わり、追加したTargetを選択するとplistの名前を変更したため、plistとの紐付けがなくなっているのが確認できます。「Choose Info.plist File」で再度紐づけてあげましょう。

名前を変更したplistを選択して「Choose」してください。

Targetを増やす方法は以上です。

処理を分岐させたい方は以下もお試しください。

Targetの切り替えによる処理の分岐方法

targetを増やせたら処理の分岐ようにTARGET > Build Setting >「Preprocessor Macros」に、最初からあるTargetにPRODUCTION、追加したTargetDevにDEVELOPを追加することにします。

  

このようPreprocessor MacrosのDebugにもReleaseにも設定をします。
Debugだけだと開発上では成功しているように見えるが、AppStoreに乗ったアプリだと分岐がされない状態になります。必ずReleaseにも設定してください。

設定が完了したら実際のソースコード上で処理を分岐させます。

#ifdef DEVELOP
#define CONST_TEST      @“開発”
#else

#define CONST_TEST      @“本番”
#endif

今回はViewController内で宣言している定数を分岐させ、ログとして出力するプログラムにしました。

あとは普段どおり、TARGET>実機(or シュミレーター)の部分を

Target > 実機 や TargetDev  > 実機 に切り替えてログの出方が変わっていることが確認できれば成功です。