Возможно ли пробное поведение в приложениях для Android - PullRequest
2 голосов
/ 04 января 2012

Я новичок в разработке Android (я знаю очень простые вещи), и есть вероятность, что скоро мне будет поручено портировать приложение WP7 на Android (к счастью, я могу использовать MonoDroid ...).

Теперь это приложение имеет пробную функциональность ( см. Здесь ), что для WP7 означает, что я могу проверить, купил ли пользователь его (чтобы я мог включить дополнительные функции внутри приложения) или загрузилбесплатное издание.Я не хочу, чтобы срок действия пробной версии истек, я хочу, чтобы «бесплатная версия» моего приложения была ограничена определенными функциями.

Есть ли что-то похожее на Android? (И может ли это бытьсделано на MonoDroid?)

Я смотрел на Службу лицензирования Google, но не понимаю, как это мне поможет.

Ответы [ 2 ]

1 голос
/ 14 ноября 2012

Я бы пошел на решение двух приложений.Одно «настоящее» приложение, которое содержит все функции.Второе приложение "ключ" , которое проверяет только лицензирование.

Первое приложение будет проверять, установлено ли приложение ключ .Если проверка положительная, отобразите полный контент, включите все функции.Если приложение ключа отсутствует, оно ведет себя как бесплатная версия.

Также очень важно проверить, является ли закрытый ключ, подписавший оба приложения, одинаковым.Без этой проверки кто-то может создать свое собственное приложение 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 .Вы можете запросить его, чтобы проверить, действительна ли еще лицензия.Таким образом, вы можете получить временные лицензии.
1 голос
/ 04 января 2012

Вероятно, лучший способ для вас - использовать встроенные покупки

...