Provided your target devices are running Android 2.1 (Eclair) or newer, implementation couldn't be simpler.
Simply include one open source Java class in your project and the application will automatically check if there's a new version (via either a MD5 check or application version number check), prompting the user to update via a notification if there is. Your project will need internet, wifi_state and network_state permissions in order to do the update checks but, well, that makes sense right? In addition, since we're installing outside of the Play Store, the device will also need to be set to allow installations from unknown sources, but there's a good chance that's already enabled for the application to be installed in the first place! If it's not, the user gets an alert informing them they need to change the setting anyway.
How well does it work? Fantastically well.
The first step is to sign up with an account at Auto Update .APK (AuA). Authentication is carried out via your Google account and after signing in and approving the terms of service (basically, don't use the service for illegal purposes!), you're ready to go!
The default service offering includes 1GB of traffic. 2GB / 5GB / 15GB / 40GB / 100GB options are available, all paid for with a reasonably priced monthly subscription.
Everything at AUA is managed via their web console. The web console is where you upload apps, release new versions, check your bandwidth, view download stats and generally check on the status of your account. Here you can also choose whether your apps can be updated by anyone, or whether updating is limited to specified e-mail address.
As well as serving as an update service, you can also set AuA to allow direct downloads of your app, effectively using it as a file host. Although this is a useful feature, from a cost perspective it's probably not the best way to host the initial download if you are expecting a large number of users. If you are only deploying to a small group however, this is perfect.
If you do deploy an application and accidentally exhaust your bandwidth, thankfully, nothing terrible happens. Your users will not be prompted to install an update until the next time your allowance is renewed, but there's no negative impact on the user experience, which is important.
With the AuA Java class being open source, it does mean that if you want to make any tweaks to the experience, it's very easy to do. For the MoDaCo Toolkit, I've implemented AuA with a couple of custom features - an update check is performed in a boot receiver and I modified the notification to be cancellable rather than persistent, both tweaks I could make exceptionally quickly and easily.
Overall, I have to say that I find the Auto Update .APK service excellent. It's simple to configure and use but extremely effective and smooth in operation, reasonably priced and with great support if you have any questions. If you need to deploy your application outside of the Play Store environment... don't ship without it.
Head on over to the Auto Update .APK manual to learn more.
Click here to view the item