No previous questions about it, so here I ask.
Background:
I have an old app, in free and paid versions, in the Play Market. I created a new version, radically changed and with a different payment system (free app + in app purchases only, no more a paid version: reduce maintenance costs). minSdkVersion
also changed from 1.5 to 2.1.
Because of all those differences, I decided to upload a new app, not just update the current one (i.e., not selectively provide a new apk for API 7+ --- multiple APKs). This is especially important because of the new payment system, as I don't want to force old, paid customers, to buy everything again. I want to leave them alone and happy as they are (4.4/4.7 rating). In short, I don't want to "force" people into anything. In this case, into buying again the same thing through in-app-purchases, besides other things the new app offers.
Questions:
Having explained to you my background, it raises the obvious questions:
1. How do I hide the old apps from the API 7+ audience while still keeping them visible to all the current API 7+ customers, i.e., those that already bought it?
My biggest concern here is the paid app. I'm thinking about pushing a new version with maxSdkVersion
set to 6 (SDK 2.0.1), effectively blocking new API 7+ customers to the old apps. But I'm worried that the current API 7+ customers will suddenly lose access to the app. That raises two questions:
2. Will they be able to keep updating the app? is it reasonable to guess "yes"?
3. Even if the answer to the previous question is "yes", it's still unclear to me what will happen if the user uninstalls the app, and then go find it again in the Market (not just updating). Will it disappear or will it still appear under his "bought" apps list, considering that meanwhile the app filter requirements changed?
Remark: I would upload a test app to see that, but AFAIK the author is not allowed to buy his own app (even the license behaves differently), so I couldn't test the uninstall-filter-install scenario.
# # # # # # # Reply to answers: # # # # # # #
@Sparky:
I think you got it wrong. I know my way around multiple APKs, and, of course, the documentation. The problematic here is way beyond that.
Note also that
maxSdkVersion
is deprecated, so this throws a little bit of a wrench into your proposal to cap the old APK when you issue the new APK.
Thank you. I missed that.
Multiple APKs offers a simpler user story.
If you say so (besides the other things I didn't quote), I think you probably didn't wrap your head around this issue. Please follow me:
You either pay me again or you lose what you already have.
Do you see the problem now? Do you see why I'm forced to provide a new app? Or am I still not getting what you said (I think not)?
Updating your apps to the latest version gives you access to the latest features and improves app security and stability. Important: If Google determines that an app update fixes a critical security vulnerability, we may make certain app updates.
You can download it from the Google Play Store, then use APKMirror Installer to install or update your apps afterward. Otherwise, grab the APKMirror Installer app from the official APKMirror website. Visit the APKMirror website and search for an app you want to install on your Android device.
Here is an untried idea for your consideration:
Upgrade your present, pre-in-app-payments app to include a ContentProvider that provides a cryptographic hash that only it knows how to generate in response to a random seed (to prevent replay attacks).
Release your new app that uses in-app payments as a separate APK, and have it check for the existence of the earlier app on the user's system by attempting to access the ContentProvider just described, passing it a random value and confirming that the response is correct. If such a response is received, then the user owns the old app, and you can enable the corresponding features of the old app in the new app without requiring any in-app payments to do so.
Now, if some of your users skip the upgrade to the old app that gives them the new ContentProvider, and go straight to your new app, they'll be dinged for the payments. But they can then upgrade if they like and run the new app again to get validated.
This does address your issue. However, it has issues of its own. So, put it in your tool kit and see if it comes in handy, as is or in combination with something else you may later devise!
You will do yourself a disservice issuing a new app instead of an update without at least considering multiple APKs, because it complicates upgrading your existing paid users.
Suppose you simply update your paid app to API level 7, cut its price to 0 and add In-App Payments. Devices with API level >=7 will be offered an upgrade, while devices with API level <=6 will not be notified, won't see it in Play (Market), and won't be able to reinstall if they uninstall. That would be 'no' to your questions 2 and 3.
But now it is possible to implement multiple APKs: http://developer.android.com/guide/market/publishing/multiple-apks.html http://developer.android.com/training/multiple-apks/
Specific to your issue, you can offer multiple APKs based on API level: http://developer.android.com/training/multiple-apks/api.html
This lets you maintain two versions of the same app, separated by API level. So the answer to your question 1 is, implement multiple APKs per the cited articles.
By publishing a whole new app, your answer to question 2 is 'yes'. By implementing multiple APKs, the answer to question 2 is also 'yes', and your application lineage/upgrade story is a lot simpler from the user's perspective (a bit harder for you technically, easier in the customer service department). Note also that maxSdkVersion
is deprecated, so this throws a little bit of a wrench into your proposal to cap the old APK when you issue the new APK.
Likewise with question 3. Either by publishing a new app or implementing multiple APKs, you can keep offering an APK for the legacy API levels that your users can find and install.
Multiple APKs offers a simpler user story. Publishing a new app makes it easier for you to differentiate the apps, if for example you want to say, "Look! Now EXTRA shiny!"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With