dimanche 29 décembre 2019

How to support multiple versions of server in one mobile app version?

This is pretty much duplicate of the following two questions which definitely do not have a certain or accepted answer yet.

Multiple Server Versions who needs to supported by one mobile App Version

Mobile strategy: How to handle this server-client version permutation?

So, the use case here is that the product is hosted on-prem by the customers and hence each customer can have different version of the product, like Customer A can be on version 1.0 of the server and Customer B can be on version 2.0 of the server.

Version 1.0 of the mobile app is developed with version 1.0 of the server and the plan is to update the mobile app version at least every time the server version upgrade happens. So, in a way version 2.0 of the mobile app will consume version 2.0 of the server which would have added features to version 1.0.

The mobile app version 2.0 in fact can have a different user experience altogether. The version of the server will be known to the mobile app only at runtime after the user authenticates (which will be first screen on the mobile app)

Now, some customers can still be on version 1.0 of the server as they might not want to upgrade due to many reasons. But the app on the devices of users/employees of the customers will be latest, that is, 2.0.

And it is not limited to just two versions. There can be as many as 10 different versions.

What would be the best way to handle such a client server problem at runtime? I want to ensure that version 2.0 of the mobile app works with version 1.0 of the server in the same way as version 1.0 of mobile app would work. Basically, mobile app becomes version 1.0 in terms of functionality and UI.

For iOS app, I am thinking of keeping separate targets in Xcode for each mobile app version. Each new target copies files from previous target and then adds its own new files or changes to copied files. That would solve the maintainability problem to some extent, in the sense that when we release this product as a SaaS solution, we just keep the latest target code.

However, I am not sure how I ensure that the version 2.0 of the mobile app selects files of version 1.0 when it finds server version as 1.0 after authentication happens.

I also got a hint of using Workspace as a possible solution. But not sure on how that would also help.

Any ideas will be appreciated, thanks in advance.

Aucun commentaire:

Enregistrer un commentaire