Let’s say I have a Huuge database onto a server that works with a 1.0 version of my App.
Then I plan to change the database model and release a 2.0 version of the app.
When I submit my 2.0 app, there will be a day the app will be available onto the appstore. I don’t know that day, nor the hour-minute-second it will be available for download.
So… how may I synchronize my database model upgrade with the 2.0 app availability, assuming that I have a way to deactivate the 1.0 version calls to the server (refusing the 1.0 calls and asking the user to upgrade the app) ?
Let’s take an example. You released a chat app. But after some monthes, a court of justice oblige you to ask for the user’s age ? But… your 1.0 app is not designed to ask this. So you update your 1.0 database model to carry an age, and release a 2.0 app that ask the user’s age if it is not known.
In that case, maintaining the 1.0 app is not an option. Users MUST update the app, or service may be down for them.
So, until the day of judgment, you can still use the 1.0 app, but after that date and as soon as the 2.0 app is available, the 2.0 app and database model must be used.
I control my apps with a navmap which is configured to read the version and the server routes. If you are worried that it should be activated after its approved, then the previous downloaded versions would fail. So you need to find a way that both the versions work as applications don’t get auto updated.
Now to solve your problem, you could change the port on which you listen and serve the date accordingly. You could either create a new route which you can include in the new version and check that at the http server and serve the data. That way you will not break previous versions.
EDIT:
You can control when the application will be released after its approve by apple. So untill approval allow both versions, and once approved make changes to your database to bring down 1.0 and release the app 2.0.