Лицензирование программ – Как?
Необходимые условия
- AndroidPIT App Center 1.5 или выше
- Версия Android 1.6 или выше
- Библиотека лицензирования AndroidPIT, AndroidPIT Licensing Library
- Библиотека проверки лицензии Android, Android License Verification Library (LVL)
- Eclipse Android Development Tools (ADT)
Вы уже используете LVL?
Если Вы уже используете Библиотеку проверки лицензии Android (LVL), внедрить Библиотеку лицензирования AndroidPIT очень просто.
1.
Загрузите AndroidPIT Licensing Library и добавьте в свой проэкт.
2.
Измените два следующих определения переменных из
private LicenseCheckerCallback mLicenseCheckerCallback;
|
в
private IAndroidPitLicenseCheckerCallback mLicenseCheckerCallback;
|
3.
Измените создание чекера из
mChecker = new LicenseChecker(
|
в
mChecker = new AndroidPitLicenseChecker(
|
4.
Измените определение вашего листенера из (например)
class MyLicenseCheckerCallback implements LicenseCheckerCallback
|
в
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
5.
Измените тип параметра errorCode в метод applicationError от
public void applicationError(ApplicationErrorCode errorCode)
|
в
public void applicationError(AndroidPitLicenseCheckCode errorCode)
|
и расширьте обработку ошибок с кодами ответа AndroidPIT (см. ниже).
Это все! Метод обращения к чекеру, как и allow() и dontAllow() callback-методы не нуждаются в изменениях.
На панели быстрого запуска
Библиотека лицензирования AndroidPIT (AndroidPIT Licensing Library) похожа на Библиотеку проверки лицензии Android компании Google (LVL). Для использования AndroidPIT Licensing Library добавьте Android License Verification Library (LVL) и AndroidPIT Licensing Library в ваш проэкт. В onCreate()-методе создайте AndroidPitLicenseChecker и назначьте ему такой уровень, который бы реализовал интерфейс IAndroidPitLicenseCheckerCallback. Дополнительно вам нужен лицензионный код, который вы найдете в вашем профиле разработчика на сайте AndroidPIT. Пример выглядит следующим образом:
import android.app.Activity;
|
В дополнение к проверке действующей лицензии на AndroidPIT вы можете также легко проверить лицензии в Android Market. Для этого адаптируйте вызов конструктора AndroidPitLicenseChecker, для чего назначьте ему также Google Public Key и Google Policy. Все остальные шаги установки LVL вы найдете на LVL documentation.
/**
|
Подробнее
Система лицензирования AndroidPIT ориентирована на проверку Библиотеки проверки лицензий Android (LVL), созданную Google. Она обеспечивает проверку подлинности программ, которые приобретаются через AndroidPIT App Center. Для этого необходимо подключение к серверу лицензий AncroidPIT через Интернет. Кроме того, конечному пользователю нужно иметь действующующий профиль на AndroidPIT.
С помощью AndroidPIT Licensing Library ваша программа сможет проверить через App Center, есть ли у конечного пользователя действующая лицензия для запуска программы. Проверка наличия лицензии происходит при каждом запуске программы максимум один раз в день. Промежуточный контроль показывает последнее значение, выданное сервером лицензий (время может меняться без предварительного уведомления).
Шаг за шагом
Эта пошаговая инструкция предусматривает, что вы используете Eclipse ADT. В случае, если вы пользуетесь различными средствами разработки, вам могут понадобиться дополнительные действия.
Загрузите AndroidPIT Licensing library и Android License Verification Library (LVL) и добавьте их как проэкты в Eclipse. Для использования AndroidPIT Licensing Library необходима как минимум 4я версия Android API, которая была выпущена с Android 1.6. Создайте новую Аndroid-программу и добавьте androidpit-licensing-lib в настройках в разделе android как независимую библиотеку к проэкту программы. Пожалуйста, убедитесь, что библиотека связана с Android License Verification Library (LVL).
Мой проект показывает неразрешенные символы или я не могу откомпилировать мою программу.
Проверьте путь к Google LVL и к AndroidPIT Licensing library в настройках вашего проэкта Android. Он должен отвечать пути в вашей файловой системе.
Установки для AndroidPIT Licensing Library должны выглядеть следующим образом:
Как внедрить проверку лицензии в мой код?
Чтобы разрешить licensing library проверку лицензии через AndroidPIT App Center, создайте в onCreate()-методе экземпляр класса MyLicenseCheckerCallback. Конструктор ожидает экземпляр контекста, который обычно является самой деятельностью. Полученный код может выглядеть следующим образом:
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
|
Кроме того, конструктору потребуется название пакета вашей программы и лицензионный ключ. Лицензионный ключ является открытым ключем на основе 64-битной кодировки, который вы найдете в вашем профиле разработчика на сайте AndroidPIT .
Как получить уведомление от сервера лицензий?
Проверка лицензии осуществляется через вызов checkAccess() в AndroidPitLicenseChecker. Метод требует обратного вызова объекта, который реализует интерфейс IAndroidPitLicenseCheckerCallback. Метод allow() вызывается из Licensing Library, чтобы проинформировать вас об успешной проверке лицензии пользователя. В любом другом случае вызывается dontAllow(). Кроме того, метод applicationError() информирует вас об ошибках, которые могут произойти во время проверки лицензии. Вы можете реагировать по своему желанию на действия, которые выполняются с помощью этих трех методов.
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
Как дополнительно проверить лицензию в Android Market?
В дополнение к проверке в нашей системе лицензирования мы предлагаем простую интеграцию Android License Verification Library (LVL) компании Google. Чтобы ее интегрировать, просто добавьте LVL policy и public key в конструктор нашего AndroidPitLicenseChecker. Таким образом проверка лицензии будет происходить внутри license library-кода. При успешной проверке лицензии вы будете напрямую уведомлены с помощью allow()-метода. Негативные результаты проверки вызовут дополнительный запрос к серверам лицензирования AndroidPIT. Если и эта проверка лицензии будет негативной, вы получите отрицательный ответ от библиотеки лицензирования.
Этот пример ориентируется на пример из Google API.
mChecker = new AndroidPitLicenseChecker(
|
Как проверить различные сообщения об ошибках от сервера лицензирования?
На странице лицензирования в вашем профиле разработчика на AndroidPIT вы можете настроить код ответа, который отправляется сервером лицензирования. Это удобно в том случае, если вы хотите протестировать правильность реакции вашей программы на сообщения об ошибке от нашего сервера лицензирования. Для этого просто выберите соответствующее значение из выпадающего списка. После этого сервер лицензий будет всегда выдавать выбранный код ответа, если вы вошли в систему с вашего профиля разработчика.
Как отключить кэширование результатов в App Center?
App Center сохраняет результат последнего запроса минимум один день или пока мобильное устройство имеет возможность связаться с нашим сервером лицензий через Интернет. Чтобы отключить кэширование, вы можете включить режим отладки в чекере лицензии. Для этого просто вызовите setDebug(true). Это отключит кэширование и все запросы будут отправлены в App Center. Не забудьте выключить режим отладки, прежде чем опубликовать вашу программу.
Что произойдет, если пользователь не вошел в App Center?
Если в App Center отсутствуют или хранятся неправильные учетные данные, библиотека откроет всплывающее диалоговое окно, чтобы узнать e-mail и пароль пользователя AndroidPIT.
Как я могу убедиться, что запросы, касающиеся лицензий попадают на лицензионный сервер?
AndroidPIT license library содержит категорию AndroidPitSignedLicenseChecker. Эта категория позволяет проверить, попал ли запрос на лицензионный сервер или нет. Для этого ответ сервера подписывается с помощью личного ключа разработчика программы. AndroidPIT license library дополнительно проверяет полученные данные с подписью, используя AndroidPitLicenseingResponseValidator, сравнивая Salt, отправленный в запросе с Salt в ответе. Пожалуйста, обратите внимание на то, что этот механизм не обеспечивает кэширование данных ответа. Если пользователь не имеет соединения с лицензионным сервером, AndroidPIT license library отвечает сообщением ERROR_NOT_CONNECTED.
Пример использования AndroidPitSignedLicenseChecker выглядит следующим образом:
AndroidPitSignedLicenseChecker mChecker;
|
Я могу использовать свой собственный метод проверки лицензии?
Да, это возможно. Пожалуйста, приведите в действие ILicensingResponseValidator и обеспечьте AndroidPitSignedLicenseChecker инстанцией имплементирующего класса. Этот класс обеспечивает выполнение двух методов. getSalt() должен возвращать целое число, которое будет использоваться в качестве Salt при проверки лицензии. Salt следует сохранить во время запроса, чтобы иметь возможность сопоставить с Salt в ответе. Метод checkResponse() проверяет данные в ответе и реагирует на ошибку сообщением AndroidPitLicenseCheckCode.NOT_LICENSED. Если проверка прошла успешно, код ответа сервера должен вернуться. Для примера можно обратиться к AndroidPitLicensingResponseValidator из библиотеки лицензирования AndroidPIT.
Мой проект не может найти enumerationde.androidpit.AndroidPitLicenseCheckError.
Она переименована в de.androidpit.AndroidPitLicenseCheckCode.
Как создать открытый ключ на основе 64--разрядной кодировки?
Как вы, наверное, заметили, мы предоставляем вам открытый ключ в виде Base64-закодированной строки. Чтобы проверить подпись к данным ответа нужно переобразовать эту строку в обьект PublicKey. Следующий код покажет как это сделать.
/**
|
Библиотека лицензирования AndroidPIT, AndroidPIT Licensing Library
В случае, если вы используете старую Android Market Licensing library (Package com.android.vending.licensing), используйте следующую AndroidPIT Licensing library:
Библиотека лицензирования AndroidPIT, AndroidPIT Licensing Library Version 1.3
Если вы используете новую версию Google Play library (Package com.google.android.vending.licensing), используйте следующую версию AndroidPIT Licensing library:
Библиотека лицензирования AndroidPIT, AndroidPIT Licensing Library Version 2.0
- Мой проект показывает неразрешенные символы или я не могу откомпилировать мою программу.
- Как внедрить проверку лицензии в мой код?
- Как получить уведомление от сервера лицензий?
- Как дополнительно проверить лицензию в Android Market?
- Как проверить различные сообщения об ошибках от сервера лицензирования?
- Как отключить кэширование результатов в App Center?
- Что произойдет, если пользователь не вошел в App Center?
- Как я могу убедиться, что запросы, касающиеся лицензий попадают на лицензионный сервер?
- Я могу использовать свой собственный метод проверки лицензии?
- Мой проект не может найти enumerationde.androidpit.AndroidPitLicenseCheckError.
- Как создать открытый ключ на основе 64--разрядной кодировки?
Библиотека лицензирования AndroidPIT, AndroidPIT Licensing Library