На этой странице рассказывается, как настроить использование Play Integrity API в приложении, игре или SDK. Чтобы интегрировать API, вам потребуется проект Google Cloud, который необходим для отправки запросов. Затем вы можете связать проект Google Cloud с Google Play Console (для приложений) или Google Play SDK Console (для SDK). Это необходимо, чтобы получить доступ к дополнительным параметрам конфигурации, функциям тестирования и отчетам API, а также запросить увеличение суточной квоты на запросы.
Включите Play Integrity API
Для каждого приложения или SDK, вызывающего Play Integrity API, должен быть создан проект Google Cloud, чтобы использовать API и отслеживать его использование. Это обязательный первый шаг для всех интеграций. Вы можете включить Play Integrity API в консоли Google Cloud или сразу пропустить и перейти к связыванию облачного проекта с Google Play, и Play Integrity API будет включен автоматически.
В консоли Google Cloud создайте новый облачный проект или выберите существующий, который вы хотите использовать с Play Integrity API.
- Перейдите в раздел API и сервисы.
- Выберите Enable APIs and services (Включить API и сервисы).
- Найдите Play Integrity API.
- Нажмите Включить.
Теперь вы можете интегрировать Play Integrity API в свое приложение. Чтобы получить доступ к продвинутым функциям и увеличить квоту, перейдите к шагу связывания.
Установить связь с Google Play (рекомендуется)
Чтобы связать проект Google Cloud с приложением или SDK, следуйте инструкциям ниже.
Для приложений и игр в Google Play
Чтобы включить дополнительные функции и запросить увеличение дневной квоты API, свяжите проект Google Cloud с Google Play Console.
- Откройте Google Play Console и выберите приложение.
- Перейдите в раздел Защищено Google Play.
- Рядом с Play Integrity API нажмите кнопку Начать, чтобы перейти к настройкам Play Integrity API.
- Нажмите кнопку Установить связь с проектом.
- Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API. Если Play Integrity API ещё не включен для проекта, он будет включен автоматически после связывания.
Для поставщиков SDK в Play SDK Console
Поставщики SDK, использующие Google Play SDK Console, могут связать свой облачный проект Google Cloud, чтобы соотносить использование API с SDK, а не с отдельными приложениями, в которых он применяется. Это также позволит включить дополнительные функции и запросить увеличение дневной квоты API. Обратите внимание, что доступ к Google Play SDK Console предоставляется только тем, кто соответствует требованиям.
- Откройте Google Play SDK Console и выберите SDK.
- Перейдите в раздел Целостность SDK.
- В разделе Play Integrity API нажмите Связать облачный проект.
- Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API. Если Play Integrity API ещё не включен для проекта, он будет включен автоматически после связывания.
Лимиты на использование Play Integrity API
По умолчанию для приложения или SDK установлено ограничение в 10 000 запросов в день. Оно связано с номером облачного проекта. Если вы ожидаете большего объема, вы можете запросить увеличение квоты.
| Действие | Суточная квота | Примечания |
|---|---|---|
| Запросы токенов | 10 000 | Общий для классических запросов и стандартной подготовки токенов |
| Расшифровка токенов на серверах Google | 10 000 | Общие для классических и стандартных запросов |
Как увеличить максимальное количество запросов в день
Увеличение квоты зависит от критериев допуска. Увеличение квоты применяется как к созданию токенов на клиентской стороне, так и к вызовам расшифровки на серверной стороне. Обработка запросов может занять до недели. Рекомендуем отслеживать использование Play Integrity API в консоли Google Cloud и настроить оповещения о квотах, чтобы избежать перебоев в работе сервиса.
Даже если у вас высокий лимит, используйте классические запросы только для редких и важных действий, чтобы не расходовать трафик и заряд батареи.
Для приложений и игр в Google Play
Чтобы получить увеличенную квоту, ваше приложение должно быть доступно в Google Play, а также на других каналах распространения. В Play Console свяжите проект Google Cloud со своим приложением. Запросы на увеличение квоты из несвязанных проектов будут отклонены.
Чтобы запросить увеличение лимита, выполните следующие действия:
- Свяжите соответствующий облачный проект Google Cloud в Play Console.
- Убедитесь, что вы правильно реализовали логику работы API, включая повторные запросы.
- Заполните форму запроса квоты.
Для поставщиков SDK в Play SDK Console
Чтобы получить право на увеличение квоты, вы должны подтвердить право собственности на SDK в Google Play SDK Console и связать облачный проект с SDK. Доступ к Google Play SDK Console предоставляется при соблюдении определенных требований.
Чтобы запросить увеличение лимита, выполните следующие действия:
- Свяжите свой облачный проект Google Cloud в Google Play SDK Console.
- Заполните форму обращения в службу поддержки разработчиков.
В поле для комментариев укажите сведения о SDK, опишите свой вариант использования, тип запросов к API (стандартные, классические или оба), частоту запросов и желаемое максимальное количество запросов в день.
Интегрируйте Play Integrity API в приложение
Чтобы интегрировать Play Integrity API в приложение или SDK, выполните одно из следующих действий в зависимости от среды разработки:
Kotlin или Java
Последняя версия библиотеки Android для Play Integrity API доступна в хранилище Google Maven. Добавьте в файл build.gradle своего приложения следующую зависимость:
implementation 'com.google.android.play:integrity:1.6.0'
Unity
В следующих разделах описывается, как интегрировать и настроить Google Play Integrity API для проектов Unity, включая поддерживаемые версии Unity, методы установки и настройку среды.
Поддерживаемые версии Unity
- Поддерживаются версии 2019.x, 2020.x и более поздние.
- Для Unity 2018.x поддерживаются версии 2018.4 и более поздние.
- Unity 2017.x и более ранних версий не поддерживается.
Как настроить среду разработки
OpenUPM-CLI
Если у вас установлен OpenUPM CLI, вы можете установить реестр OpenUPM с помощью следующей команды:
openupm add com.google.play.integrityOpenUPM
Откройте настройки менеджера пакетов, выбрав в меню Unity Edit (Редактировать) > Project Settings (Настройки проекта) > Package Manager (Менеджер пакетов).
Добавьте OpenUPM в качестве реестра с ограниченной областью действия в окне Package Manager (Менеджер пакетов):
Name: package.openupm.com URL: https://package.openupm.com Scopes: com.google.external-dependency-manager com.google.play.common com.google.play.core com.google.play.integrityОткройте меню менеджера пакетов, выбрав в меню Unity Window (Окно) > Package Manager (Менеджер пакетов).
В раскрывающемся списке "Область действия менеджера" выберите Мои реестры.
Выберите пакет Google Play Integrity plugin for Unity в списке пакетов и нажмите Install (Установить).
Импортировать из GitHub
Скачайте последнюю версию
.unitypackageс сайта GitHub.Импортируйте файл
.unitypackage, выбрав в меню Unity Assets (Объекты) > Import package (Импортировать пакет) > Custom Package (Пользовательский пакет), и импортируйте все элементы.
Unreal Engine
В разделах ниже описано, как интегрировать и настроить Google Play Integrity API для проектов Unreal Engine.
Поддерживаемые версии Unreal Engine
Плагин поддерживает Unreal Engine 5.0 и все последующие версии.
Как настроить среду разработки
Скачайте плагин Play Unreal Engine из хранилища GitHub.
Скопируйте папку
GooglePlayв папкуPluginsв проекте Unreal Engine.Откройте проект Unreal Engine и нажмите Edit (Изменить) → Plugins (Плагины).
Найдите Google Play и установите флажок Включено.
Перезапустите проект игры и запустите сборку.
Откройте файл
Build.csпроекта и добавьте модульPlayIntegrityвPublicDependencyModuleNames:using UnrealBuildTool; public class MyGame : ModuleRules { public MyGame(ReadOnlyTargetRules Target) : base(Target) { // ... PublicDependencyModuleNames.Add("PlayIntegrity"); // ... } }
Нативный код
Следуйте руководству по настройке нативных объявлений. Подробную информацию можно найти в справочной документации по нативному API.
Как настроить ответы API (необязательно)
Ответ API включает стандартные оценки, возвращаемые в каждом запросе. Если вы связали облачный проект в Play Console или Play SDK Console, то можете настроить ответ API так, чтобы он содержал дополнительную информацию.
Оценки целостности по умолчанию
По умолчанию в ответе Play Integrity API возвращаются следующие оценки целостности:
| Поле ответа | Значение | Описание |
|---|---|---|
| Сведения об аккаунте Google Play | LICENSED |
У пользователя есть право на использование приложения. Другими словами, пользователь установил или обновил ваше приложение на своем устройстве через Google Play. |
UNLICENSED |
У пользователя нет права на использование приложения. Это происходит, например, если ваше приложение установлено из неизвестного источника. | |
UNEVALUATED |
Статус лицензирования не проверялся из-за несоблюдения обязательного требования. Это может происходить в том числе по следующим причинам:
|
|
| Целостность приложения | PLAY_RECOGNIZED |
Приложение и сертификат имеют версии, зарегистрированные в Google Play. |
UNRECOGNIZED_VERSION |
Сертификат или название пакета не соответствуют данным Google Play. | |
UNEVALUATED |
Целостность приложения не проверялась. Не соблюдено обязательное требование, например устройство не считается достаточно надежным. | |
| Целостность устройства | MEETS_DEVICE_INTEGRITY |
Устройство Android, на котором запускается приложение, должно быть сертифицированным и немодифицированным. На устройствах с Android 13 и более поздними версиями ОС есть аппаратное подтверждение того, что загрузчик операционной системы заблокирован, а загруженная ОС Android является сертифицированным образом производителя устройства. |
| Пустое значение | Приложение запущено на устройстве, где зафиксированы признаки взлома (например, перехват управления API) или нарушения системы безопасности (например, настройка root-доступа), или приложение запущено не на физическом устройстве (например, на эмуляторе, который не прошел проверку целостности Google Play). |
Google Play Games на компьютере
Если вы распространяете приложение в Google Play Games для ПК, вы автоматически соглашаетесь на получение дополнительной пометки в оценке целостности устройства:
| Поле ответа | Label (Звукозаписывающая компания) | Описание |
|---|---|---|
| Целостность устройства | MEETS_VIRTUAL_INTEGRITY |
Пользователь запускает приложение в эмуляторе Android, в котором есть сервисы Google Play. Эмулятор прошел проверку целостности системы и соответствует основным требованиям Android к совместимости. |
Необязательные оценки целостности
Если вы связали облачный проект с Play Console или Play SDK Console, то можете включить получение дополнительной информации.
Чтобы изменить настройки, перейдите в Play Console и откройте страницу Защищено Google Play. Рядом с Play Integrity API нажмите Настроить. Нажмите Изменение ответов, внесите изменения и сохраните их.
Информация об устройстве
Дополнительные ярлыки устройств в оценке deviceIntegrity позволяют узнать больше о среде устройства, в которой запущено приложение.
Если устройство соответствует критериям нескольких меток, в ответе будут возвращены все они.
Эти ярлыки можно использовать для создания многоуровневой стратегии применения мер. Например, вы можете больше доверять устройству, которое возвращает три ярлыка (MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITY и MEETS_BASIC_INTEGRITY), чем устройству, которое возвращает только один ярлык (MEETS_BASIC_INTEGRITY).
Атрибуты устройства сообщают версию Android SDK для ОС Android на устройстве. В будущем могут быть добавлены другие атрибуты устройств.
Недавние действия на устройстве. Возвращает уровень от LEVEL_1 (мало запросов) до LEVEL_4 (много запросов). Высокий уровень активности может указывать на то, что устройство используется для создания чрезмерного количества токенов, которые затем распространяются на ненадежные устройства.
Запоминание устройства позволяет хранить некоторые данные, связанные с определенным устройством, и при необходимости обращаться к ним, не нарушая конфиденциальность пользователя.
Если вы включите получение необязательной информации, в ответ API будут добавлены новые поля и ответы:
| Поле ответа | Label (Звукозаписывающая компания) | Описание | |
|---|---|---|---|
| Целостность устройства | MEETS_BASIC_INTEGRITY |
Устройство, на котором запускается приложение, проходит основные проверки целостности системы. Загрузчик операционной системы может быть заблокирован или разблокирован, а состояние при запуске – проверенным или непроверенным. Устройство может быть не сертифицировано. В этом случае Google не может гарантировать безопасность, конфиденциальность и совместимость приложений. На устройствах с Android 13 и более поздними версиями ОС для получения оценки MEETS_BASIC_INTEGRITY необходимо, чтобы
корень доверия для подтверждения был предоставлен Google. |
|
MEETS_STRONG_INTEGRITY |
Приложение запущено на оригинальном и сертифицированном устройстве Android с последним обновлением системы безопасности.
|
||
| Атрибуты устройств | sdkVersion: 19, 20, ..., 37 |
Версия SDK ОС Android, установленной на устройстве.
Возвращаемое число сопоставляется с Build.VERSION_CODES. |
|
| Пустое значение | Версия SDK не проверялась из-за несоблюдения обязательного требования. В этом случае поле sdkVersion не задано, поэтому поле deviceAttributes пустое.
Это может произойти по следующим причинам:
|
||
| Стандартные запросы токена целостности API на этом устройстве за последний час (для каждого приложения) | Запросы токена целостности в классическом API на этом устройстве за последний час (для каждого приложения) | ||
| Недавние действия на устройстве | LEVEL_1 (самый низкий) |
10 и менее | 5 или меньше |
LEVEL_2 |
От 11 до 25 | От 6 до 10 | |
LEVEL_3 |
От 26 до 50 | От 11 до 15 | |
LEVEL_4 (самый высокий) |
Более 50 | Более 15 | |
UNEVALUATED |
Недавние действия на устройстве не оценивались. Это может произойти по следующим причинам:
|
||
| Запоминание устройства | values: bitFirst, bitSecond, bitThird |
Это значения битов, которые вы ранее задали для определенного устройства. Вы сами определяете значение каждого бита. По умолчанию для всех трех битов задано значение false. | |
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird |
Это даты записи битовых значений в формате UTC с точностью до года и месяца. Дата записи бита отзыва обновляется каждый раз, когда для бита устанавливается значение true, и удаляется, когда для бита устанавливается значение false. | ||
Сведения о среде
Риск доступа к приложению. Запущены ли другие приложения, которые могут использоваться для записи экрана, показа оверлеев или управления устройством. Проверенные сервисы специальных возможностей, известные Google Play, автоматически исключаются из этой оценки.
Оценка Play Защиты указывает, включен ли на устройстве пользователя этот сервис и обнаружено ли известное вредоносное ПО.
Если вы включите получение необязательной информации, в ответ API будут добавлены новые поля и ответы:
| Поле ответа | Значение | Описание |
|---|---|---|
| Оценка риска доступа к приложению | KNOWN_INSTALLED |
Приложения устанавливаются из Google Play или предварительно загружаются в системный раздел производителем устройства. |
KNOWN_CAPTURING |
Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут использоваться для чтения или записи входных и выходных данных запрашивающего приложения, например приложения для записи видео с экрана. | |
KNOWN_CONTROLLING |
Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут использоваться для управления устройством, а также входными и выходными данными запрашивающего приложения. К таким приложениям относятся, например, приложения для удаленного управления. | |
KNOWN_OVERLAYS |
Запущены приложения, установленные через Google Play или предустановленные на устройстве, которые могут показывать оверлеи поверх запрашивающего приложения. | |
UNKNOWN_INSTALLED |
Установлены другие приложения, которые не были скачаны из Google Play или предустановлены производителем устройства в системном разделе. | |
UNKNOWN_CAPTURING |
Запущены другие приложения (не установленные через Google Play и не предустановленные на устройстве), которые могут использоваться для чтения или записи входных и выходных данных запрашивающего приложения, например приложения для записи видео с экрана. | |
UNKNOWN_CONTROLLING |
Запущены другие приложения (не установленные из Google Play и не предустановленные на устройстве), которые могут использоваться для управления устройством, а также входными и выходными данными запрашивающего приложения. К таким приложениям относятся, например, приложения для удаленного управления. | |
UNKNOWN_OVERLAYS |
Запущены другие приложения (не установленные через Google Play и не предустановленные на устройстве), которые могут показывать оверлеи поверх запрашивающего приложения. | |
| Пустое значение | Риск доступа к приложению не оценивается, если не соблюдено обязательное требование. В этом случае поле appAccessRiskVerdict остается пустым. Это может происходить в том числе по следующим причинам:
|
|
| Оценка Play Защиты | NO_ISSUES |
Google Play Защита включена и не обнаружила проблем с приложениями на устройстве. |
NO_DATA |
Google Play Защита включена, но проверка ещё не проводилась. Возможно, настройки устройства или приложения Google Play недавно были сброшены. | |
POSSIBLE_RISK |
Play Защита отключена. | |
MEDIUM_RISK |
Google Play Защита включена, и с ее помощью на устройстве были обнаружены потенциально опасные приложения. | |
HIGH_RISK |
Google Play Защита включена, и с ее помощью на устройстве были обнаружены опасные приложения. | |
UNEVALUATED |
Наличие Google Play Защиты и вредоносного ПО не проверялось. Не соблюдено обязательное требование, например устройство не считается достаточно надежным. |
Как изменить классические настройки запросов (необязательно)
Пропустите этот раздел, если вы планируете выполнять только стандартные запросы к API.
По умолчанию шифрованием ответов управляет Google Play. Это значит, что для расшифровки оценок ваш внутренний сервер обращается к серверу Google. Вы также можете управлять ключами самостоятельно, чтобы расшифровывать данные локально в защищенной серверной среде.
Разрешить Google управлять ключами шифрования ответов (рекомендуется)
Чтобы обеспечить безопасность приложения, рекомендуем разрешить Google создавать ключи и управлять ими. Для расшифровки и проверки ответов ваш внутренний сервер будет обращаться к серверу Google Play.
Управляйте собственными ключами шифрования
Чтобы расшифровывать данные локально в собственной защищенной серверной среде, вы можете скачать ключи шифрования из Play Console или Play SDK Console. Чтобы использовать эту функцию, ваше приложение должно быть доступно в Google Play.
Прежде чем менять стратегию управления шифрованием ответов в Play Console, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play. Это поможет избежать сбоев.
Как переключаться между ключами шифрования, управляемыми Google и самостоятельно
- Откройте Play Console и выберите приложение .
- Перейдите на страницу Защищено Google Play.
- Рядом с Play Integrity API нажмите Настроить.
- В разделе Классические запросы рядом с пунктом Шифрование ответов нажмите Изменить.
Чтобы перейти на самостоятельное управление ключами, сделайте следующее:
- Выберите Управление и скачивание ключей шифрования ответов и загрузите открытый ключ.
- Нажмите Сохранить, чтобы автоматически скачать зашифрованные ключи.
- Обновите защищенный внутренний сервер, чтобы расшифровывать ответы локально с помощью этих ключей.
Чтобы перейти на ключи, управляемые Google, сделайте следующее:
- Выберите Разрешить Google управлять ключами шифрования ответов (рекомендуется).
- Нажмите Сохранить изменения.