Управление бесплатной версией моего приложения

Мое платное приложение опубликовано на рынке WP7. Теперь я хотел бы создать бесплатную версию приложения.

Я полагаю, что у меня будет константа IsFreeVersion = true;, а затем на основе этого отключить некоторые функции.

Какой был бы лучший подход к созданию моего проекта для этого? Я определенно не хочу иметь две версии кода. Так должен ли я создать новый проект и связать файлы?

Также, как мне обрабатывать разные значки приложений? Наконец, не нужен ли отдельный идентификатор GUID для моего идентификатора приложения?

Ответ 1

Если вам нужны отдельные приложения для бесплатных и платных версий (предположительно, вы ограничиваете функциональность бесплатного приложения или добавляете объявления), я бы создал отдельный проект, а затем ссылку на существующие файлы другого (используйте "добавить как ссылку" ).

Затем вы можете настроить различные версии по мере необходимости. Когда я делаю подобные вещи, мне нравится использовать частичные методы (и классы) для расширения и настройки различных версий.
Вы также можете использовать специальные директивы компилятора для конкретных приложений для ограничения функциональности.

Ответ 2

Если вы хотите иметь бесплатную и оплаченную версию вашего приложения в том же проекте, не используя версию "Trial", вот как я это делаю:

Каждому проекту присваивается один ProductID, который отличает приложение от других приложений во время установки. Вы могли бы создать второй проект и ссылку на все файлы в первом проекте, но это потребует обслуживания по мере роста проекта. Мое решение позволяет использовать конфигурацию сборки для выбора бесплатного или платного приложения для сборки.

Сначала вам понадобится отдельный ProductID для каждой версии приложения. Этот ProductID объявлен в файле манифеста "Свойства/WMAAppManifest.xml". Итак, первый шаг - создать две версии WMAAppManifest.xml. Я называю их WMAAppManifestPaid.xml и WMAAppManifestFree.xml.

В каждом из этих файлов манифеста укажите отдельный идентификатор GUID для ProductID, а также измените заголовок бесплатной версии, чтобы вы могли разделить их друг с другом, когда они установлены.

Далее нам нужно добавить две новые конфигурации сборки в проект. Я называю их ReleaseFree и DebugFree.

Затем вы добавляете несколько предварительных событий для всех конфигураций сборки для копирования соответствующего файла манифеста:

если $(ConfigurationName) == Release copy $(ProjectDir)\Properties\WMAppManifestPaid.xml $(ProjectDir)\Properties\WMAppManifest.xml if $(ConfigurationName) == Отладка copy $(ProjectDir)\Свойства\WMAppManifestPaid.xml $(ProjectDir)\Свойства\WMAppManifest.xml if $(ConfigurationName) == ReleaseFree copy $(ProjectDir)\Properties\WMAppManifestFree.xml $(ProjectDir)\Properties\WMAppManifest.xml if $(ConfigurationName) == DebugFree copy $(ProjectDir)\Свойства\WMAppManifestFree.xml $(ProjectDir)\Свойства\WMAppManifest.xml

Теперь вы можете создать либо бесплатную, либо платную версию приложения, просто изменив конфигурацию сборки.

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

тогда вы можете просто использовать директивы компилятора для изменения кода, например:

#if FREE_VERSION
    s = "My App Free";
#else
    s = "My App Paid";
#endif

Ответ 3

Trial API предназначен для решения такой ситуации. Вы можете проверить, истинна ли IsTrial, и в этом случае вы можете ограничить функциональность всего в одной базе кода. Я предполагаю, что вы избегали этого, чтобы ваше приложение появилось в разделе Free на Marketplace. В этом случае вам нужно будет отправить его как новое приложение, что означает новый GUID.

AFAIK (возможно, у кого-то есть другой метод), вам нужно будет создать новый проект и запустить отдельную сборку. Вы можете включить свою существующую базу кода по большей части, но в итоге вы получите две версии, если вы не включите Trial API. Поскольку это новый проект, вы можете изменить иконки плитки на все, что захотите.

Ответ 4

Jeff Brand также подготовил очень красивую библиотеку TrialManager, которая позволяет вам осуществлять различные типы управления пробными версиями.

Сценарии вроде:

  • Истекает после N числа использования
  • Истекает после T минут использования
  • ...

http://www.slickthought.net/post/2010/08/30/Managing-Trial-Applications-for-Windows-Phone-7.aspx