How do I build multiple versions of the same iOS application for OEMs

Viewed 11500

I have an existing iOS application that I need to be able to build and release multiple versions of for different clients.

This application interfaces with hardware that is available from a handful of different companies, the hardware is identical but each company sells the hardware under a different name

This is a free app, the goal is not to spam the appstore with multiple versions of the same app, the goal is to allow companies that sell rebranded hardware to have a mobile app that uses the brand name that they use for the hardware.

What I need to be able to do:

  • Build multiple versions of the same application that can be submitted to the Appstore, each version would be submitted under a different companies apple account. I would assume that means multiple projects so that each project can use a company specific provisioning profile
  • Each version has some different images (Icon, startup image, maybe a few others)
  • Each version has some different strings (Company name, Product Name, maybe a few others)

With Android I just create a library project and I can override strings and images with a trivial amount of effort.

With iOS I haven't found an obvious answer.

I looked into adding a new target to my existing project but I don't think that will work: - I can't figure out how to replace images beyond the icon and starting screen - I can't figure out how to replace strings - Would I be able to use different provisioning profiles for the different apps that compile with the same project? I know the target settings allow different provisioning profiles, but doesn't the project settings have its own set of provisioning profiles?

Can I package the current application into a library that other projects can use and replace images/strings? So each version would have its own xCode project but use the same code.

Maybe I need to work more with the idea of multiple targets...

I am using xCode 4.2, but I am prepared to move to a newer version if necessary

3 Answers

This was very helpful for me. It is essentially the multi-target approach but you customize it for a company and you upload to their account.

https://developer.apple.com/videos/play/wwdc2019/304/ See from the 17 minute mark.

To summarize, you partner with the company you are developing for, from their Apple Connect account, they assign you as the developer and marketing role for the specific apps you are developing for them. You upload your builds to their account. They get ultimate decision of when they will release it and who will test it with TestFlight.

Related