I know Google Play has an excellent system for In-App purchasing. However, my thoughts are that the general public pigeon holes games with In-App purchasing strategies into a "taboo" list.
Also, I'm a one person app developer (like most of us) and would prefer not to have to setup a server and manage signature verification tasks.
Would it be possible to sell add-on packs for games as separate APK's?
If so, what is this called and is there an example of how to do this?
How would you make the APK not show up in the app drawer? I don't want to clutter up uers' app drawers.
What is the "best practices" strategy for doing this?
Would I have to create an "add-on" manager of some sort?
The strategy that I came up with is that upon start up of the app, I would have it look through a list of possible add-ons. If that add-on has been purchased from Google Play, then those assets will be included and usable in the app.
As I create more add-on packs, I will update the main app so that it will have an updated list of add-ons to look for. I know that this can delay app start up but I don't anticipate having more than 100 add-on packs for the entire life of this app.
I would love to hear your thoughts, discussion and tips on this!
Thanks!
Your main game app could look for installed extensions using PackageManager:
PackageManager pm = activity.getPackageManager();
try {
pm.getPackageInfo(EXT_PACKAGE_NAME, 0);
extExists = true
} catch(NameNotFoundException e) {
log.info("Extension not present.");
}
On top of that you should also validate the package signature of the extension. Otherwise somebody could just create an app with the extension package name and unlock that feature in your game.
PackageInfo pi = pm.getPackageInfo(EXT_PACKAGE_NAME, PackageManager.GET_SIGNATURES);
// There will be practically only 1 signature unless you compile the APK with
// multiple signatures
Signature s = pi.signatures[0];
extExists = s.hashCode() == EXT_HASHCODE;
This SO question answers how to hide the extension app icon from the drawer.
You also need to check regularly if your extensions are still present. Just imagine that someone purchases an extension, runs your game once and unlocks the extension and then asks for a refund for the extension.
My 2 cents about following this approach: I guess that quite a few customers will confuse these extensions with your game. Most people do not read app description texts anyway. So you need to make it absolutely clear that they are about to buy an extension.
Furthermore you will make it very hard for your customers to keep everything in place. Imagine a customer purchased your main game and 20 extensions. When she switches devices or does a factory reset it will be a PITA to download all of these extensions again. In app purchases make life easier here.
Last but not least, you cannot have consumable in-app items. You cannot repeatedly buy the same extension.