
The other day, I made an
application to bypass the rutracker lock, but I’ve already received a two-way hang-over from Google for various contrived reasons. This is very upset, and the question arose - what to do? Search on Habr showed that such problems arose very many (proof:
one ,
two ,
three ,
four ... Thousands of them).
And besides the ban, there are many more reasons why your application may be “overboard” on Google Play - for example, if it is intended for use only in a company, for friends or for another circle of people. It is also possible that your application by definition cannot be uploaded on Google Play - for example, if it is an application installer itself.
I did not find a finished article on this topic, so I decided that the right decision would be to figure it out and write my own. So, there are only two fundamental options.
1. We use an alternative application store
It's pretty rich here. Amazon App Shop, Samsung Apps, Yandex.Store, blackmart, humble bundle, F-Droid ... In general, not bad. I have tried only Yandex.Store so far. It turned out to register and publish the application for 5 minutes - it is already available there. True, the bewilderment is the complete inability to somehow give a link to install the application in Yandex.Store. Maybe I'm blind, but the Share buttons are just not there. Well, no web interface - only mobile. By the way, the question to Yandex representatives is Yandex.Store alive at all? The latest Twitter post dates back to 2014.
')
Pros:
- The presence of some features that we are used to on Google Play - including automatic updates, statistics and billing (there is not in all of these, of course).
- At least some authority of the publisher is worse than if the application was on Google Play, but better than nothing.
- Individual features - for example, F-Droid publishes only open source applications.
Minuses:
- Loss in image. All users are addicted that the app should download with google play. If it is not there - then something is wrong. Although here, for example, there is no Yandex.Store on Google Play. And you have to download it with a very dumb method ...
- The user will have to install some "left" application store. I have nothing but google play since the advent of Android, and I was not going to bet. Installing one more “big brother” with full capabilities for manipulating your device is pretty dumb.
- It seems that none of them have any information about failures. Plus other Google Play features including billing.
2. Independent decision
No matter how scary it sounds, in fact, here we come to the analogue of the usual desktop software. The program itself knows when and how to update it, talks about it, it integrates payment options and monetization. Advertising and promotion do you yourself. Horror, horror! But actually, we were just spoiled. You just need to find the right ways. You can promote the application, for example, on thematic blogs and forums - including on w3bsit3-dns.com with a very good amount of audience. Or right on Habré.
By the way, even if your application is successfully published on Google Play, it makes sense to hedge up and at least make your own update algorithm in it, which is activated if, for example, the application has not been updated for a long time. Or by checking the ban on your server or directly on Google Play. Otherwise, if you are banned for a while, users will not be able to update the application. And if there is a backup option - the harm will be noticeably less.
pros
Your application is almost impossible to block - only with the resource where you keep the update and information.
Minuses
- All that is possible - you have to do it manually.
- Loss in the image, which has already been said earlier. Oddly enough, it is possible that less than in the case of using some kind of application store.
So, what do you have to do:
Placement of the application for download
In fact, this only means that you need to put the APK somewhere in a trusted place. They are not so few - you can use all the same w3bsit3-dns.com, you can put releases right in github, you can on your website ... a lot of options.
Debugging errors
Yes, we are accustomed to the good - Google will catch the error, everything will tell about its location, the user's device, and so on. But ... No problem to implement it yourself. As the simplest option, we catch all of the exept and send it somewhere to the server via HTTP or even to mail.
Statistics collection
Unfortunately, I have never been interested in application statistics, but you obviously have to implement at least download statistics.
Complicated Libraries
Actually you have to forget about all the difficult and good things that Google Play gives. However, the same applies, even if to a lesser extent, to any app stores.
Update
There are basically three options for updating:
- Automatic update with SuperUser permissions. This is pretty dumb, but it is clear - we will not consider in detail.
- Manual update after automatic download. Not bad, but requires permission to write data. If your application does not have it planned, then putting extra permissions is evil. Requires user permission to install software from third-party sources.
- Manual update when following the link. A simple option, however, requires the user to download and open the APK file. Well, just like the second option - requires the user permission to install programs from third-party sources.
To show how simple it is - I will show a primitive implementation of the third option,
which I did for my application in an hour of time.1. Add somewhere our current version of the application. I put it directly in the source code on Github in build.gradle:
2. Publish application releases somewhere. I also have them on github, in the format
String url="https://github.com/jehy/rutracker-free/releases/download/" + version+"/app-release.apk";
3. We write the update algorithm itself:
3.1 in the MainActivity.OnCreate we add the verification call:
new Updater().execute(this);
3.2 We write a simple class to check:
class Updater extends AsyncTask<MainActivity, Void, Void> { private Exception exception; protected Void doInBackground(MainActivity... activity) { checkUpdates(activity[0]); return null; } Integer getLastAppVersion() { try {
3.3 Add a class to store information that the user decided to ignore this release:
public class SettingsManager { static String get(Context mContext, String key) { SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(mContext); String data = settings.getString(key, null); if (data == null) Log.d("SettingsManager", "No settings " + key + " is stored! "); else Log.d("SettingsManager", "Got settings " + key + " equal to " + data); return data; } @SuppressLint("CommitPrefEdits") static void put(Context mContext, String key, String value) { SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(mContext); SharedPreferences.Editor editor = settings.edit(); editor.putString(key, value); Log.d("SettingsManager", "Saved setting " + key + " equal to " + value); editor.commit(); } }
3.4 Add a function that will show the user a dialogue with the transition proposal:
public void Update(final Integer lastAppVersion) { runOnUiThread(new Runnable() { @Override public void run() { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage(" rutracker free " + lastAppVersion + " - ? " + " - APK ," +" .") .setCancelable(true) .setPositiveButton("", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Intent intent = new Intent(Intent.ACTION_VIEW); String apkUrl = "https://github.com/jehy/rutracker-free/releases/download/" + lastAppVersion + "/app-release.apk";
Voila! Everything, now we have an updated application. And if it ever appears on Google Play or in another app store that the user has, then it can also be updated from there.
findings
What is in the bottom line - I think that you can live without Google Play. And not only is it possible - it is necessary, the disadvantages of having a monopolist in the market are obvious. Including, if there was at least some meaningful competition - perhaps, communication with technical support would be at least some adequate, and not a formal reply with empty templates.
I also want to get opinions from readers.
- And how do you solve the problems of the ban application?
- Do you use alternative app stores?
- Do applications from any other sites through apk?
- What do you think, how are we going to put applications on our devices in five years?
Links