You can simply create an HTML5 Application Cache.
With an Application Cache, your app will also be accessible offline as well, as well as the ability to create new updates easily and to force users to update (if they're online).
You should keep the version number consistent across both platforms if you use this method. You will be able to force update through this method, so the need to maintain users on old versions goes away. To answer #3, I think that is up to you after you analyze your user base and come to a conclusion.
In the App Cache, all assets must load or it will fail, so be mindful of what you declare in your cache manifest. I recommend listing static assets only.
Learn more about HTML Application Cache: http://www.html5rocks.com/en/tutorials/appcache/beginner/
This solution is on the front end, so you will have to use JavaScript to manage the versions and application cache.
To detect new versions of an application in JS the code block below will detect when a user loads your application:
window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
if (window.applicationCache) { //Application cache is supported
window.applicationCache.addEventListener('updateready', function(e) {
//Listening for an updated cache
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
//If user accepts new version of site, it will reload the site.
window.location.reload();
}
} else {
return;
}
}, false);
}
}, false);
It will simply ask if the user would like the load the new version of the site, however since you want to force update a user, you can modify this to look like:
window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
if (window.applicationCache) { //Application cache is supported
window.applicationCache.addEventListener('updateready', function(e) {
//Listening for an updated cache
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
//Force update a user when a new version becomes available
window.location.reload();
}, false);
}
}, false);
Any changes in your application cache manifest will create a new version of the application, for instance if your manifest looks like:
CACHE MANIFEST
#Version 1.0
game.html
assets/css/style.css
NETWORK
*
...and you change it to:
CACHE MANIFEST
#Version 1.0
#I love cupcakes and candy
game.html
assets/css/style.css
NETWORK
*
You will automatically create a new version of your application.
As far as I can tell, this will be a good solution to solving your problem, however I do hear that there is a little more work to do to get it working on Android (link below).
PhoneGap Application Cache tutorial: http://tmkmobile.wordpress.com/2012/03/04/html5-offline-solution/