Я бы пошел на решение двух приложений.Одно «настоящее» приложение, которое содержит все функции.Второе приложение "ключ" , которое проверяет только лицензирование.
Первое приложение будет проверять, установлено ли приложение ключ .Если проверка положительная, отобразите полный контент, включите все функции.Если приложение ключа отсутствует, оно ведет себя как бесплатная версия.
Также очень важно проверить, является ли закрытый ключ, подписавший оба приложения, одинаковым.Без этой проверки кто-то может создать свое собственное приложение key и разблокировать вашу функциональность.Для этого рассмотрим этот фрагмент, который я взял из этого блога: http://www.yoki.org/2010/07/31/creating-a-freepaid-app-pair-for-the-android-market/
protected boolean isProInstalled(Context context) {
// the packagename of the 'key' app
String proPackage = "org.yoki.android.pkgname";
// get the package manager
final PackageManager pm = context.getPackageManager();
// get a list of installed packages
List<PackageInfo> list =
pm.getInstalledPackages(PackageManager.GET_DISABLED_COMPONENTS);
// let's iterate through the list
Iterator<PackageInfo> i = list.iterator();
while(i.hasNext()) {
PackageInfo p = i.next();
// check if proPackage is in the list AND whether that package is signed
// with the same signature as THIS package
if((p.packageName.equals(proPackage)) &&
(pm.checkSignatures(context.getPackageName(), p.packageName) == PackageManager.SIGNATURE_MATCH))
return true;
}
return false;
}
Этот подход дает вам несколько гибких преимуществ:
- отдельные платные зоны.Вы можете назначить наборы функций для различных клавиш приложений.например.Приложение key1 разблокирует дополнительные игровые уровни a1, a2, a3 и app key2 разблокирует уровни b1, b2
- времени лицензирования - вместо того, чтобы только проверять наличие приложения key .Вы можете запросить его, чтобы проверить, действительна ли еще лицензия.Таким образом, вы можете получить временные лицензии.