Обзор лицензирования,Обзор лицензирования

Лицензирование Google Play — это сетевая служба, которая позволяет приложению запрашивать доверенный сервер лицензирования Google Play, чтобы определить, лицензировано ли приложение для текущего пользователя устройства. Служба лицензирования основана на способности сервера лицензирования Google Play определять, имеет ли данный пользователь лицензию на использование определенного приложения. Google Play считает пользователя лицензированным, если он является зарегистрированным покупателем приложения.

Запрос начинается, когда ваше приложение отправляет запрос к службе, размещенной клиентским приложением Google Play. Затем приложение Google Play отправляет запрос на сервер лицензирования и получает результат. Приложение Google Play отправляет результат в ваше приложение, которое может разрешить или запретить дальнейшее использование приложения по мере необходимости.

Примечание. Если версия приложения находится на стадии закрытого или открытого тестирования, все пользователи, которым разрешено загружать и устанавливать это приложение, считаются лицензированными пользователями приложения. Дополнительные сведения см. в разделе Использование тестовых треков для получения бесценной обратной связи от пользователей на ранней стадии .

Рисунок 1. Ваше приложение инициирует проверку лицензии через библиотеку проверки лицензий и клиент Google Play, который обеспечивает связь с сервером Google Play.

Примечание. Раньше вы могли протестировать приложение, загрузив неопубликованную «черновую» версию. Эта функция больше не поддерживается; вместо этого вы должны опубликовать его в версиях закрытого или открытого тестирования. Дополнительную информацию см. в разделе Черновики приложений больше не поддерживаются .

Чтобы правильно идентифицировать пользователя и определить статус лицензии, серверу лицензирования требуется информация о приложении и пользователе — ваше приложение и клиент Google Play совместно собирают информацию, а клиент Google Play передает ее на сервер.

Чтобы помочь вам добавить лицензирование в ваше приложение, Android SDK предоставляет загружаемый набор исходных кодов библиотек, которые вы можете включить в свой проект приложения: пакет лицензирования Google Market. Библиотека проверки лицензии (LVL) — это библиотека, которую вы можете добавить в свое приложение, которая обрабатывает всю связанную с лицензированием связь со службой лицензирования Google Play. Добавив LVL в ваше приложение, ваше приложение может определить свой статус лицензирования для текущего пользователя, просто вызвав метод и реализовав обратный вызов, который получает ответ о состоянии.

Ваше приложение не запрашивает сервер лицензирования напрямую, а вместо этого вызывает клиент Google Play через удаленный IPC, чтобы инициировать запрос лицензии. В запросе лицензии:

  • Ваше приложение предоставляет: имя пакета, одноразовый номер, который позже используется для проверки любого ответа от сервера, и обратный вызов, по которому ответ может быть возвращен асинхронно.
  • Клиент Google Play собирает необходимую информацию о пользователе и устройстве, такую ​​как основное имя пользователя учетной записи Google устройства, IMSI и другую информацию. Затем он отправляет запрос на проверку лицензии на сервер от имени вашего приложения.
  • Сервер Google Play оценивает запрос, используя всю доступную информацию, пытаясь установить личность пользователя с достаточным уровнем достоверности. Затем сервер сверяет личность пользователя с записями покупок вашего приложения и возвращает ответ о лицензии, который клиент Google Play возвращает вашему приложению через обратный вызов IPC.

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

Обратите внимание, что во время проверки лицензии ваше приложение не управляет сетевыми подключениями и не использует API-интерфейсы, связанные с лицензированием, на платформе Android.

Ответы на лицензию безопасны

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

Служба лицензирования создает одну пару лицензионных ключей для каждого приложения и предоставляет открытый ключ на странице «Службы и API» вашего приложения в Play Console. Вам необходимо скопировать открытый ключ из Play Console и встроить его в исходный код вашего приложения. Сервер сохраняет закрытый ключ внутри себя и использует его для подписи ответов на лицензии для приложений, которые вы публикуете с помощью этой учетной записи.

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

Библиотека проверки лицензий

Android SDK предоставляет загружаемый пакет, называемый пакетом лицензирования Google Market, который включает в себя библиотеку проверки лицензий (LVL). LVL значительно упрощает процесс добавления лицензирования к вашему приложению и помогает обеспечить более безопасную и надежную реализацию вашего приложения. LVL предоставляет внутренние классы, которые обрабатывают большинство стандартных операций запроса лицензии, таких как обращение к клиенту Google Play для инициирования запроса лицензии, а также проверка и проверка ответов. Он также предоставляет интерфейсы, которые позволяют легко подключать собственный код для определения политики лицензирования и управления доступом по мере необходимости вашего приложения. Ключевые интерфейсы LVL:

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

Чтобы помочь вам начать работу с Policy , LVL предоставляет две полностью полные реализации Policy , которые вы можете использовать без изменений или адаптировать к вашим потребностям:

ServerManagedPolicy
Гибкая Policy , которая использует настройки, предоставленные сервером лицензирования, для управления кэшированием ответов и доступом к приложению, когда устройство находится в автономном режиме (например, когда пользователь находится в самолете). Для большинства приложений настоятельно рекомендуется использовать ServerManagedPolicy .
StrictPolicy
Ограничительная Policy , которая не кэширует данные ответа и разрешает доступ приложению только тогда, когда сервер возвращает лицензированный ответ.

LVL доступен в виде загружаемого пакета Android SDK. Пакет включает в себя как сам LVL, так и пример приложения, который показывает, как библиотека должна быть интегрирована с вашим приложением и как ваше приложение должно управлять данными ответов, взаимодействием пользовательского интерфейса и состояниями ошибок.

Исходники LVL предоставляются как проект библиотеки Android, что означает, что вы можете поддерживать единый набор источников библиотеки и использовать их в нескольких приложениях. В SDK также доступна полная тестовая среда, поэтому вы можете разработать и протестировать реализацию лицензирования в своих приложениях перед их публикацией, даже если у вас нет доступа к физическому устройству.

Требования и ограничения

Лицензирование Google Play позволяет вам применять лицензионный контроль к приложениям, публикуемым через Google Play. Служба не предназначена для того, чтобы вы могли контролировать доступ к приложениям, которые не опубликованы через Google Play или запускаются на устройствах, не поддерживающих клиент Google Play.

Вот некоторые моменты, которые следует учитывать при реализации лицензирования в вашем приложении:

  • Приложение может использовать сервис только в том случае, если на его хост-устройстве установлен клиент Google Play и устройство работает под управлением Android 1.5 (уровень API 3) или выше.
  • Для завершения проверки лицензии сервер лицензирования должен быть доступен по сети. Вы можете реализовать поведение кэширования лицензий, чтобы управлять доступом к вашему приложению при отсутствии сетевого подключения.
  • Безопасность средств управления лицензированием вашего приложения в конечном итоге зависит от конструкции самой реализации. Служба предоставляет строительные блоки, которые позволяют вам безопасно проверять лицензию, но фактическое применение лицензии и обработка лицензии — это факторы, которые зависят от вас. Следуя рекомендациям, изложенным в следующих документах, вы можете обеспечить безопасность вашей реализации.
  • Добавление лицензии к приложению не влияет на работу приложения при запуске на устройстве, не поддерживающем Google Play.
  • Вы можете реализовать контроль лицензирования для бесплатного приложения, но только если вы используете службу для предоставления файлов расширения APK .

Замена защиты от копирования

Лицензирование Google Play — это гибкий и безопасный механизм контроля доступа к вашим приложениям. Он эффективно заменяет механизм защиты от копирования (больше не поддерживается), который ранее предлагался в Google Play, и предоставляет вам более широкий потенциал распространения ваших приложений.

Лицензирование позволяет перейти к модели, основанной на лицензиях, которая применима на всех устройствах, имеющих доступ к Google Play. Доступ не привязан к характеристикам хост-устройства, а зависит от вашего приложения в Google Play (через открытый ключ приложения) и политики лицензирования, которую вы определяете. Ваше приложение можно установить и управлять им на любом устройстве и в любом хранилище, включая SD-карту.

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

Чтобы начать добавлять лицензирование в свое приложение, перейдите к разделу «Настройка лицензирования» .