If you are a developer in a company that is developing software for its products only, then you probably won't be familiar with the "White-label" term.
A white-label app is a product produced by one company then packaged and distributed by other companies under different brands.
Let's assume that we are going to produce an app for coffee shops. The main functionality will be the same but we want to change the colours, icons, name, etc for each brand.
So, let's talk about Targets. A target specifies a product to build and contains the instructions for building the product from a set of files in a project or workspace. For example, we can create our TestCoffee app with its files, bundle ID, etc, and then we can create a new Target (called RealCoffee), that it will share the source code with TestCoffee. The name, bundle ID, and some other properties should be different between the two targets but luckily we can differentiate them easily in the Targets.
You can download the project here.
As you have already noticed, we have only one Target called TestCoffee. This is our test/abstract environment. Our first customer bought our software solution and it's called RealCoffee. Now, we need to duplicate our TestCoffee target:
Then we rename Display Name and Bundle Identifier to RealCoffee and rockandnull.com.RealCoffee accordingly.
We also need to rename the scheme so it will be easier to match the target with the scheme (TestCoffee copy should be rename to RealCoffee).
You probably have already noticed one new .plist file called TestCoffee copy 2-Info.plist that belongs to RealCoffee target, but don't worry we will come back to this later.
Now, run the app using the TestCoffee target and tap the "I want coffee" button. Then, switch to RealCoffee target and tap the "I want coffee". You will notice the popup message is slightly different between the two targets.
This is how easy is to use Targets in your project! Of course, things could get messy pretty fast in a real project, but don't worry, we are here to cover these scenarios in the next parts.