Wasseem Khayrattee
Wasseem Khayrattee

Reputation: 682

Making an app engine to use for similar app, but with different clients

Our team has made a big app. This app has been a success with previous client. Now other clients will be using this app, but with added requirements and/or different needs.

I would like to focus on making the current app into a generic Engine so that we can maintain this engine up-to-date across those different client-apps.

How should I:

  1. Tackle this?
  2. Bearing in mind that some viewControllers will need to reflect for new client
  3. Changing all the graphics across the app

Any hint of how I can achieve? Been googling since long, could not arrive at a decent solution.

Upvotes: 1

Views: 66

Answers (1)

foOg
foOg

Reputation: 3146

I already did something similar in the past, here is how we did:

  • part 1A: create a template project using demo assets (images has to have a default names ex:background_home.png).
  • part 1B: make sure that "special texts" are loaded from a plist (example:[HOME_TITLE:"your title"]) in this way you will be able to load customizable texts from a plist in the app bundle programmatically.
  • part 2: ask your designer to make a special design for the client respecting the name used by the developers in the code (ex:part 1A => background_home.png) or ask your designer to generate more or less 20 themes.
  • part 3: make a MACOS app or a script which will copy the original project and replace demo assets and plist by the correct one in the original project. You want the script to generate an xcode project as you will need to double check with your developer team that the project is properly setted-up, build and deployment is much easier when you have an xcode project. In other words, the script just take the folder of the original project your team made and replace some file inside. So you won't struggle with xcode project architecture, you just replace defaults assets. Also remember that storyboard files or pbxproj are xml so you can parse and edit them, but you might have some headache doing this, that's why I recommand you to just modify the assets in the project folder.

Then you can compile that project, configure it with the provisioning you want and deploy it to your clients. Thats what we did when we needed and it worked like a charm. Basically we made a MACOS app that the sale's force could use directly with the client. They just had to send to the developer team the generated xcode project in a zip and we were in charge of the compilation and deployment. We "developed" more than 600 products using that trick.

PROBLEMS:
- The code was fully visible in the xcode project and anybody could read and/or steal it.
- The projects were very similar to each others as they came from the same source code, only the texts and assets were differents.

WORKAROUND-SOLUTIONS:
- You can imagine implementing crypto when saving the archive of a project, in this way only authorized personal can unzip the archive containing the source code.
- You can create multiple projects and do the same process with different types of project. In this way you can change the type of a generated project according to client wishes ...

Hope this help!

Upvotes: 2

Related Questions