I'm about to publish my first app on google play and I'm a little bit lost on how to manage my app version. I have my frontend app written with react native and I have a backend server built with spring boot.
In my backend I have my version number which is incremented on each build release.
My problem is that I don't know how to manage versioning in the react-native part: there's a version tag in package.json and I read here that I should increment versionCode in AndroidManifest file.
To summarize here are my questions:
1/ Should version in my backend, in package.json and in manifest file be always the same ?
2/ Is there a way to force user to update the app when I publish a new update on google play?
3/ When I publish a new version of the app, does users need to download full app size or there's a way to allow them to just download a partial size?
4/ If there's a mismatch between frontend and backend versions, users can perform actions or call some apis that aren't available anymore in my server, how can I prevent this to happen?
I know I asked many questions in one but as I said that's the first time I publish to google play and I wanted to separate my question on 4 parts to be more clear.
1/ Should version in my backend, in package.json and in manifest file
be always the same ?
No, they can be but practically it doesn't make sense. Your app might need a hot fix or you can implement features which don't require backend changes. The app version can then be changed independently.
2/ Is there a way to force user to update the app when I publish a new update on google play?
There is. You can either do this manually by sending a request to some endpoint at your backend and check if the apps version number is smaller than the version that your API returns. If it is, act accordingly in your app, e.g. show a message or prevent the user from using the app until they update.
Alternatively, you can uses In-app updates from the play-core library.
3/ When I publish a new version of the app, does users need to download full app size or there's a way to allow them to just download a partial size?
The Play store handles this automatically. Allthough I don't know for sure if it's a full redownload or a partial one.
4/ If there's a mismatch between frontend and backend versions, users can perform actions or call some apis that aren't available anymore in my server, how can I prevent this to happen?
To prevent such issues, you should familiarize yourself with the concept of API versioning. In short: If your API update introduces breaking changes, you should create a new version of it at a different endpoint in order to support backwards compatibility.
E.g.:
http://api.example.com/v1
http://api.example.com/v2
...
Related
I saw few posts about it but most of them seem to be outdated.
I have an app published in the Play Store and it has already published version codes 1 to 6.
I have found in those releases some serious bug and I published a new release with version code 7.
The new version has an in-app update to make sure in the next times that the users will update to the latest release but right now it won't make any effect on the previous releases since they didn't have this code in them. Is there a way I can make version codes 1 to 6 to download the latest version?
As long as users keep using versions 1 to 6 I can add some critical features and I need them to make this update.
Also, I use Firebase firestore/realtime database/fcm/storage/authentication. Is there a way I can do it from there? The only thing I can think of is to send cloud message for the users to update the app.
Thank you
Is there a way I can make version codes 1 to 6 to download the latest version?
No, sorry. Let your users know by whatever other communications channel(s) you established (site announcement, blog post, Twitter/Facebook/etc., email newsletter, ...).
Unfortunately, for the users who are using version codes 1 to 6, there is not much you can do. I don't know what's the logic behind your existing "in-app update" option, but if the users can skip that step, you end up having the same problem.
To solve this kind of scenario, we usually add the version of the app to the database, and each time we open the app, we check that value against the one in the app's code. If there is a match, it means that no update is required, otherwise, we "force" the user to update the app to the latest version by opening the app's page from Google Play.
Another solution might also be Android In-app updates:
When your users keep your app up to date on their devices, they can try new features, as well as benefit from performance improvements and bug fixes. Although some users enable background updates when their device is connected to an unmetered connection, other users might need to be reminded to install updates. In-app updates is a Play Core library feature that prompts active users to update your app.
I saw few posts about it but most of them seem to be outdated.
I have an app published in the Play Store and it has already published version codes 1 to 6.
I have found in those releases some serious bug and I published a new release with version code 7.
The new version has an in-app update to make sure in the next times that the users will update to the latest release but right now it won't make any effect on the previous releases since they didn't have this code in them. Is there a way I can make version codes 1 to 6 to download the latest version?
As long as users keep using versions 1 to 6 I can add some critical features and I need them to make this update.
Also, I use Firebase firestore/realtime database/fcm/storage/authentication. Is there a way I can do it from there? The only thing I can think of is to send cloud message for the users to update the app.
Thank you
Is there a way I can make version codes 1 to 6 to download the latest version?
No, sorry. Let your users know by whatever other communications channel(s) you established (site announcement, blog post, Twitter/Facebook/etc., email newsletter, ...).
Unfortunately, for the users who are using version codes 1 to 6, there is not much you can do. I don't know what's the logic behind your existing "in-app update" option, but if the users can skip that step, you end up having the same problem.
To solve this kind of scenario, we usually add the version of the app to the database, and each time we open the app, we check that value against the one in the app's code. If there is a match, it means that no update is required, otherwise, we "force" the user to update the app to the latest version by opening the app's page from Google Play.
Another solution might also be Android In-app updates:
When your users keep your app up to date on their devices, they can try new features, as well as benefit from performance improvements and bug fixes. Although some users enable background updates when their device is connected to an unmetered connection, other users might need to be reminded to install updates. In-app updates is a Play Core library feature that prompts active users to update your app.
We are going to do a major update to an mobile app (both iOS and Android). When we do this update, we need to prevent the existing user using the older version anymore (in case if the new version is not auto updated) as some features might not work with the server update.
Is there any options in iOS and Andorid developer centers (for that app info) to mark that older version as cannot be used any more or to atleaset notify the users that they have to install the latest version when they try to use that app(incase they have switched off auto updates)
I have seen there are options to do it from the code by comparing it with the existing version and to notify the user. But since we have not implemented any such mechanism in our apps which is currently in the App stores, I don't think we can do the code based option for this version. That's why we are looking for other options like doing it though App store confugration etc..
Unfortunately, there is no solid solution for this issue.
One workaround if your app make any API calls, you can modify the response to let user know whey need to update the app. Or else, perhaps you can send a push notification to let existing user know they need to update the app.
Futhermore, you might need to implement force update mechanism, which is basically check user's current version with your latest app version, so you will know which version they are currently using. There are a few ways to do this:
Server side: You need to send app version to server and if it is not latest version, stop user and force user to go to AppStore/Playstore to update.
If you are using Firebase, you can take a look at Firebase Remote Config. I have not used it but I believe it would work.
I'm trying to help my company develop a strategy on when we should require customers to upgrade their installed mobile app prior to interacting with our back end services.
Right now, our apps have been on the market for 20 months and we've done numerous revisions to the app and the backend services. Only one of those has 'broken' anything so that customers using older versions of the app were no longer able to use the app without upgrading to a new version. We have apps for iOS, Android and Kindle Fire, all of which use the same backend services. We currently have the ability to require customers to upgrade, we're just not using it.
So the two questions:
1) Do you require users to upgrade, and if so
2) How many older versions of the app do you support.
(Additional info, this is an eCommerce app, so if you could say what type of app you're using as well, that would be helpful.)
Thank you!
You should probably look at a strategy of versioning your APIs. So that users with older/un-upgraded apps would have problems. And when they upgrade to your new builds, they would switch to the new API version and everything would work.
Coming to how many versions you support. That really depends on you. If you want to force the users to update, then make your servers deny requests to the old APIs. That way, if the user is interested to use the app further, he has to upgrade.
E*Commerce app. We control the endpoint the app connects to. In every upstream HTTP header, the app puts its version number. The web and optionally add a tag in the downstream header of "yellow", "red", "disable".
If the app gets a yellow key, it tells the user at some good point "This app is out of date - you should update to the latest version soon"
if the app sees a red key, it tells the user to update soon or the app will stop working.
If the disable header is seen. the app stops sending upstream messages and tells the user that the app no longer works, if they would like to continue using the service then update the app.
In one of our projects where we are implementing an application using Android/HTML5/JavaScript there is a requirement for having an Android Auto update kinda feature which is as described below:
Update Native version: The Native version of our application should be easy to update. New versions should be possible to “push”, or at least notify, the user of. Does this require that we publish it to the Android Market?
As of now Notification of the new version can be send to the device but we need an approach to automatically download the new version and install ie., either update the existing version or overwrite it. Hosting the new version in Android market is the last option according to the client
If someone/somebody has earlier come across or implemented such a feature, could you kindly reply back.
If you are using the Android market , the best solution is to just notify the user that an update is available. Depending on the update or Application you may decide not to allow the user the access the app if an update is available.
You will always need to push a new APK to the market , the user may setup the auto update feature but I believe there is no way for an app to force the setting.
Any method which will allow the app to auto update would either need more privileges from users or a routed device , which I guess is not a big enough percentage of users to try the feature.
The android market allow to auto-update applications. Is you want to do it without using the android market, your users will have to enable apk install from unknown sources and they will have to confirm each installation (unless their phones are rooted I think)
There is a nice service called http://push-link.com
This hosts you APK and manage updates. You can choose how the user is going to be notified and see the progress installation of all version.
Cheers...