Let's say I published a game and after some point of time I wanted to release an all new feature for the game. Of course the app must be able recognize and download the update. How does this work specifically with Google Play apps? Does the app download the entire new version of APK from the market and reinstalls itself? I'm using Java for the development, if this info helps. Any tips you can give me about this topic?
With Google Play, the user is notified that app updates are available. It is up to the user to initiate the download of the updates.
You can always include in your app a check to your server as to whether an update is available. However, this becomes a maintenance issue.
Related
I am soon ready to release my app on the play store but I would like to know how can I edit/add features/update my app without affecting my users. For example if I decided to add or remove something from the server I don't want the whole app to crash on the users. Basically running a clone where I can try out anything I want and it stays separate from the original app. How do I do that?
I am really sorry if I confused you all and my English is not the best.
For that you would run a development server and have multiple builds of your app.
You can use google play to distribute that app to your test users, described here or you can manually install the app on test devices. Manually installing is faster(if you have a few test users) than waiting for google play to push an update.
As for how to set it up, that would depend on what you are doing and with what tools. Usually you would set up multiple builds in android with BuildConfig.java variables. There you can either check the build type and use a specific API key/Server URL or you can pass a different value depending on the build. More info here.
Basically in your build.gradle you would have:
android {
...
buildTypes {
release {
buildConfigField("String", "SERVER_URL", "https://api.example.com/")
}
debug {
buildConfigField("String", "SERVER_URL", "https://api.dev.example.com")
}
}
}
You can switch which variant you are building from Build > Select Build Variant... or from the sidebar in Android Studio
Now you can access these from your code as:
BuildConfig.SERVER_URL
Next you would distribute that app to your test users.
As for the server side it depends on how you have it set up now and how you want to set it up.
Google Play’s Core library (on 1.5.0 or higher) has a feature for apps running on devices using Android 5.0 (API level 21) or higher and Chrome OS devices, called In-app updates. If you want users to try a new app feature or apply updates to improve performance or fix bugs, the Play Core library offers two methods. You can notify users about an available update using the Flexible or Immediate approach.
The In-app updates has a new request flow for you to prompt active users to update the app. Using the Flexible approach, the update is downloaded and installed in the background while the app is still in use. With the Immediate option, the user has to accept the update request after which Google Play manages the installation and restart the app.
Set a priority for each update in the Google Play Developer API, which determines how your app recommends an update, using an integer value between 0 and 5, with the default being 0 and 5 being the highest priority.
I have distributed my app through posting the link from google drive where the users can download the .apk file.Now that I haven't published my app in google play how to know how many installs or how many people have installed my application.Is there a way I can increase the count variable in the server or something like that?
Unless you went through the App Store or integrated some third party analytics tool like Fabric you would need to have implemented this in the application with a request to a server with a unique identifier to keep track.
Is there a way I can increase the count variable in the server or something like that?
Well that seems a bit shady. You don't want to lie to people, do you?
When you release an app on the Play Store, Google will keep track of how many users download your app, and update it accordingly. So if people use your app, then your downloads (listed on the Play Store) will reflect that.
To see your current downloads, you should be able to find that information on the "Google Play Developer Console." (I would imagine; I currently don't have access to the dashboard myself.)
I have an application which is deployed to some pretty remote, data connection starved regions of the world, specifically to health workers.
These people have minimal data connections and the app requires regular updates to provide increased functionality and critical bugfixes.
The problem we have is that the APK for the app is 5.7mb and only going to get larger. Which means that every time the users need to update the app, they have to download the 5.7 meg apk to update. If we roll out more than one release in a week, it can eat through a significant portion of their data plan as well as time as they have to sit and wait for it to download and install.
Is there a better way to do this? Some way to patch the versus completely replacing the application on the host device so that we deploy smaller patches?
I've tried looking for examples of "host" applications, where the actual application is just a shell for a downloadable set of libraries, sort of like a plugin system, but couldn't find any examples.
Are there any resources or a standardised way to accomplish this?
Also worth noting this is a react-native app and we're already running proguard and splitting apks based on architecture to reduce the apk size.
Did you have chance to examine CodePush? It basically allows you to push updates only for javascript part (the bundle) of your app, on-the-fly, without making your users download a new version of the apk.
If you add new native code to your project, you will still need to build and release a new apk though.
How it works is that, when you update the javascript code in your app, you push a new release. When users run the application, CodePush checks if there is a new version available and if there is, update it immediately and restart the app if you mark the mentioned release as mandatory or use the newly downloaded bundle version on next run.
Edit: react-native library of CodePush is here on github.
I have a condition where the internal DB will be changed and after the migration the old app will no longer work. Is there a way that google play or apple app store provides any flag which does this job?
Also I don't have any version check in my current app (which is already with customers) so cannot display any message in the current app to download new app and ask them to update or quit the app.
I am using Adobe Flash Builder 4.6 to create IOS & Android apps.
You can not force users to update the application but you can send them push notification for updating the application if they want to and you have implemented into current version.
But when you release the update they are able to get notify by app store and if they want they can install the update from there..
As you cannot force users to update the app using Google play or AppStore build-in feature, you can use third party librairies that do exactly what you want. appgrades.io allows you to block any version of your app by displaying a view or popup (that you can customise on appgrades Dashboard) with a custom message to ask your users to update the app. You can even add an update button that sends the users to the appstore/Google play where they can update the app. No code needed. Just integrate the SDK in your app and block any version anytime.
The other solution would be coding what appgrades does by checking with your api the latest available version and block the app with a view when you are running a lower version.
First of all, I'm sorry I don't speak very good english. I have a thesis project to make android app similiar like logo quiz using java. Basicaly, I have to make the admin site of this app or make it updatable not via play store. I'm going to put the newest APK version in a website host. Does anyone here know how to make it work like that? Or maybe you have another idea to make the admin site? please tell me
The update also must be installed. The user will check is there any newest version. Then user will download it and the downloaded APK will be automaticaly installed
This is not easy to do. The only option you have is to write some server side code to let a client know what the latest version is. The client can trigger a local notification and alert the user that a new version is available.
Facebook managed to do what you're asking but I'm sure a lot of engineering effort went into it.
[EDIT]
Google has updated their policy to forbid dynamic updates.
“An app downloaded from Google Play may not modify, replace or update
its own APK binary code using any method other than Google Play's
update mechanism.”
FYI Without uploading on play store, user will never come to know about the updates of your app.
Or
There must be some kind of notification you should implement in your admin and send to your users using the app, and through that notification you should ask user to download updated APK from your web.