# Handle Multiple Environment using Macro

# Handle multiple environment using multiple target and macro

For example, we have two environments: CI - Staging and want to add some customizations for each environment. Here I will try to customize server URL, app name.

First, we create two targets for 2 environments by duplicating the main target:

Create targets (opens new window)

For each target, we will define a custom macro. Here I will define macro named "CI" in build settings of target CI, macro named "STAGING" for target Staging.

The development target (MultipleEnvironment target): DEV (opens new window)

Target CI:

enter image description here (opens new window)

Target Staging:

enter image description here (opens new window)

Create scheme for each target: enter image description here (opens new window)

We will create a header file to define SERVER URL as below:

enter image description here (opens new window)

It means,

If you want to do more customize, for example: Change app name for each target:

enter image description here (opens new window)

enter image description here (opens new window)

Almost done. Now we want to show current SERVER_URL to main screen: enter image description here (opens new window)

Now, let's see if we run the app with the default target (MultipleEnvironment) enter image description here (opens new window) enter image description here (opens new window)

CI target:

enter image description here (opens new window) enter image description here (opens new window)

Staging target:

enter image description here (opens new window) enter image description here (opens new window)

As you can see, value of SERVER_URL and app name is changed for each target 😃