So I think what your looking for is having multiple build configurations for the same app. If so this blog covers it very well http://swwritings.com/post/2013-05-20-concurrent-debug-beta-app-store-builds. The University of Google has a lot of additional info on this. I'll try to summarize.
Basically what you will need to do is create 1 provisioning profile for each app (or a wildcard should work as well but that's another rabbit hole). So for example com.your-domain.yourapp.staging and com.your-domain.yourapp.preview.
Then you create a new schemed for each new config you want. Do this under the info tab of your project file.
Then you define some variables in your projects target under 'user-defined' for each one. I declare one called ENV_BUNDLE_DISPLAY_NAME and another called ENV_BUNDLE_IDENTIFIER. For the values of the ENV_BUNDLE_IDENTIFIER I use the bundle id for the provisioning profiles I created earlier.
Lastly you edit your App-Info.plist to use the variables you just declared. So for the field Bundle identifier I set it to $(ENV_BUNDLE_IDENTIFIER) and for bundle display name I set $(ENV_BUNDLE_DISPLAY_NAME)
Lastly when you build, run, or archive you'll need to edit the scheme to use the correct build configuration.