Я собираюсь немного рассказать о великолепном ответе @ frankodwyer и углубиться в онлайн-лицензирование. Я являюсь основателем Keygen , лицензионного REST API, созданного для разработчиков.
Поскольку вы упомянули, что вам нужно 2 «типа» лицензий для вашего приложения, то есть «полная версия» и «пробная версия», мы можем упростить это и использовать модель лицензий с функцией , где вы используете лицензию функции вашего приложения (в данном случае есть «полный» набор функций и «пробный» набор функций).
Для начала мы могли бы создать 2 типов лицензий (называемых policy в Keygen), и всякий раз, когда пользователь регистрирует учетную запись, вы можете создать "пробную" лицензию для его запуска. out («пробная» лицензия реализует нашу политику «пробной» функции), которую вы можете использовать для различных проверок в приложении, например может ли пользователь использовать Trial-Feature-A и Trial-Feature-B .
И основываясь на этом, всякий раз, когда пользователь приобретает ваше приложение (используете ли вы PayPal, Stripe и т. Д.), Вы можете сгенерировать лицензию, реализующую «полную» политику функций, и связать ее с учетная запись пользователя . Теперь в вашем приложении вы можете проверить, есть ли у пользователя «полная» лицензия, которая может делать Pro-Feature-X и Pro-Feature-Y (делая что-то вроде user.HasLicenseFor(FEATURE_POLICY_ID)
).
Я упоминал, что разрешил вашим пользователям создавать учетных записей - что я имею в виду? Я подробно остановился на этом в паре других ответов , но кратко изложил, почему я считаю, что это превосходный способ аутентификации и идентификации ваших пользователей:
- Учетные записи пользователей позволяют вам связать несколько лицензий и несколько компьютеров с одним пользователем , что дает вам представление о поведении вашего клиента и подсказывает им для «покупок в приложении» , т. е. для покупки «полной» версии (вроде мобильных приложений).
- Мы не должны требовать от наших клиентов ввода длинных лицензионных ключей, которые утомительны для ввода и трудно отследить , т. Е. Они легко теряются. (Попробуйте поискать «потерянный лицензионный ключ» в Twitter!)
- Клиенты привыкли использовать электронную почту / пароль ; Я думаю, что мы должны делать то, к чему привыкли люди, чтобы обеспечить хороший пользовательский опыт (UX).
Конечно, если вы не хотите обрабатывать учетные записи пользователей и хотите ваших пользователей вводить лицензионные ключи, это совершенно нормально (и Keygen поддерживает это а также ). Я просто предлагаю другой способ обработки этого аспекта лицензирования и, надеюсь, предоставлю хороший UX для ваших клиентов.
Наконец, поскольку вы также упомянули, что хотите обновлять эти лицензии ежегодно, вы можете установить duration в своих политиках, чтобы срок действия "полных" лицензий истекал через год, а срок действия "пробных" лицензий, скажем, 2 недель, что потребует от пользователей покупки новой лицензии по истечении срока действия.
Я мог бы углубиться, связывая машины с пользователями и тому подобное, но я подумал, что я постараюсь сделать этот ответ кратким и сосредоточиться на простом лицензировании функций для ваших пользователей.