On my work, technology and related stuff....

Archive for February 2017 | Monthly archive page

No comments

There are many instances where you would need to support multiple configurations within your iOS app beyond the standard debug and release project configuration.
 
Let’s suppose you app needs to talk to different server deployments – Development, QA and Production. In this case , you would want your app targeted for a specific environment to be configured to talk to the appropriate  server deployment.
 
 
This blog post describes how you can do that within your swift iOS app.
Things are slightly different with Obj-C, where you could define preprocessor flags within your .xcconfig files created for each environment . But with limited support for macros in swift, we will follow a slightly different approach
 

Step 1: Create desired configurations for Dev, QA and Prod

  • Under Project-Demo ,  add new configurations based upon existing Debug and Release configurations.
  • Duplicate the Debug configuration as a “Dev” configuration and duplicate the Release configuration as “QA” and “Prod” configurations .
  • Delete the Debug and Release configuration

 
 

Step 2: Add new schemes for Dev, QA and Prod configurations

 
 

Step 3: Make sure that the schemes created in Step 2 are “visible”

 
 

Step 4: Edit schemes created in Step2 and associate it with the appropriate configuration

So associate the QA scheme with QA configuration , the Dev scheme with Dev configuration and the Prod scheme with Prod configuration.

 

Step 5: Add a new user-defined build setting under Build Settings under tab.

This setting has a different value for each of the configurations.

 

Step 6: Add a info.plist property corresponding to the user-defined setting


 

Step 7: In your app,  read the info.plist property

That's it. Take appropriate actions depending on the configuration setting.

 

A demo project can be downloaded from here.