5

We are hosting a SAAS application for clients. The main app is a web appliction and different clients can be on different versions. e.g.:

Company A  version 1.0
Company B  version 1.1

We also have Android/iOS apps in App Store. Since the apps are not always up to date, we can have multiple app versions in the market too. e.g. 2.0 and 2.1 . Thus for compatibility reason, we have to make sure that each client version works with each server version:

server 1.0 must work with client 2.0,
server 1.0 must work with client 2.1,
server 1.1 must work with client 2.0, 
and server 1.1 must work with client 2.2.

It's manageable when there are only 2 sever version and 2 client version. However as the time goes by the list becomes crazy. We do have a mechanism that force mobile apps update to the latest version, but it's kinda annoying so the management people don't want to do it too often.

My question is, what is the best strategy to handle this problem? Do Android and iOS have built-in function that the user can download multiple app versions and only launch the one as required?

Thanks in advance.

Xi 张熹
  • 10,492
  • 18
  • 58
  • 86

1 Answers1

3

We are having a similar problem with multiple customers who may have different server versions deployed.

There are a few options we are currently considering:

  • Manage our customers' deployments in the cloud (administered by us) to ensure they are always running the latest version. Problematic for customers who want in-house deployments, e.g. for compliance or security reasons.
  • Bundle the older releases inside the app itself as a library and, at runtime, execute the one matching the server versions. Unfortunately leads to messy builds and bloated app packages.
  • Tell users to manually install the app, don't publish to app store. Inconvenient and problematic for less tech-savvy users.
  • Distribute apps through the customer's server deployment. Requires permission to install from unknown sources on Android. Requires the customer to have an iOS enterprise account for iOS ($299/year, each customer must sign up separately).
  • Modularize app code to enable/disable components or behavior based on server version. Might work if server updates are rare, but will become messy and hard to maintain it's happening often.

In each case, users must still update their app whenever their company upgrades the server version.

For us, using PhoneGap, there is one more option:

  • Download app code from the server and execute it. App store guidelines 2.7 and 2.8 seem to forbid this, but the developer agreement item 3.3.2 says downloading scripts running in a web view is allowed. This means the app is basically just a launcher that connects and gets a script from the server, then runs it. The downside is that it requires a download each time the app is run and/or a caching mechanism in the app's storage.

Have you found a solution that works for you? How did you choose to deal with this issue?

Chris
  • 31
  • 2
  • We don't actually have a solution. Basically we are doing option 5 "Modularize app code to enable/disable components or behavior based on server version. Might work if server updates are rare, but will become messy and hard to maintain it's happening often." It's messy and we are just trying our best to keep up with backend changes. On the other hand, the company does have a plan to move to a HTML5 front-end, hopefully it will solve all the problems. – Xi 张熹 Feb 27 '13 at 14:27
  • It's been 8 years since this post. What did you end up doing to solve this issue? What worked, what didn't? What would you propose today? – Bobby_Cheh Dec 02 '21 at 17:17