На этой странице объясняется, как настроить приложение, игру или SDK для использования API Play Integrity. Для интеграции API вам потребуется проект Google Cloud, который необходим для отправки запросов. Затем вы можете подключить свой проект Google Cloud к Google Play Console (для приложений) или Google Play SDK Console (для SDK). Подключение проекта необходимо для доступа к дополнительным параметрам конфигурации, функциям тестирования, отчётности API и запроса на увеличение вашей ежедневной квоты запросов.
Включить API целостности воспроизведения
Каждое приложение или SDK, вызывающее API Play Integrity, должно иметь проект Google Cloud для использования API и мониторинга использования. Это обязательный первый шаг для любой интеграции. Вы можете включить API Play Integrity в консоли Google Cloud или сразу перейти к подключению своего проекта Cloud к Google Play, и API Play Integrity будет включен автоматически.
В консоли Google Cloud Console создайте новый проект Cloud или выберите существующий проект Cloud, который вы хотите использовать с API Play Integrity.
- Перейдите в раздел API и сервисы .
- Выберите Включить API и службы .
- Найдите Play Integrity API .
- Нажмите «Включить» .
Теперь вы можете интегрировать API Play Integrity в своё приложение. Чтобы получить доступ к расширенным функциям и увеличению квот, необходимо перейти к этапу привязки.
Ссылка на Google Play (рекомендуется)
Свяжите свое приложение или SDK с Google Play, следуя этим инструкциям.
Для приложений и игр в Google Play
Приложения, распространяемые в Google Play, должны связать свой проект Google Cloud в консоли Google Play, чтобы включить дополнительные функции и запросить увеличенную ежедневную квоту API.
- Откройте Google Play Console и выберите свое приложение.
- Перейдите в раздел Тестирование и выпуск > Целостность приложения .
- В разделе 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 еще не включен для проекта, он будет включен автоматически при связывании.
Понимание ограничений использования API Play Integrity
Для вашего приложения или SDK установлен лимит в 10 000 запросов в день, привязанный к номеру облачного проекта. Если вы ожидаете большего объёма запросов, вы можете запросить увеличение квоты.
| Действие | Ежедневная квота | Примечания |
|---|---|---|
| Запросы токенов | 10,000 | Используется совместно с классическими запросами и стандартными подготовками токенов |
| Расшифровка токенов на серверах Google | 10,000 | Распространяется на классические и стандартные запросы |
Увеличьте максимальное количество ежедневных запросов
Увеличение квоты зависит от критериев соответствия. Увеличение квоты распространяется как на генерацию токенов на стороне клиента, так и на вызовы дешифрования на стороне сервера. Обработка запросов может занять до недели. Мы рекомендуем отслеживать использование Play Integrity API в консоли Google Cloud и настраивать оповещения о превышении квоты, чтобы избежать перебоев в работе сервиса.
Даже при более высокой квоте продолжайте ограничивать классические запросы редкими, но высокоценными действиями, чтобы экономить заряд батареи пользователя и использование данных.
Для приложений и игр в Google Play
Чтобы претендовать на увеличение квоты, ваше приложение должно быть доступно в Google Play, а также в других каналах распространения. Вам необходимо связать свой проект Google Cloud с приложением в Play Console . Запросы на увеличение квоты от несвязанных проектов будут отклонены.
Чтобы запросить увеличение:
- Подключите соответствующий проект Google Cloud в Play Console .
- Убедитесь, что вы правильно реализовали логику API, включая правильные стратегии повторных попыток.
- Подайте форму запроса на квоту .
Для поставщиков SDK в Play SDK Console
Чтобы претендовать на увеличение квоты, ваш SDK должен быть заявлен в Google Play SDK Console, а ваш облачный проект должен быть связан с вашим SDK там же. Доступ к Google Play SDK Console предоставляется при соблюдении критериев соответствия .
Чтобы запросить увеличение:
- Подключите свой проект Google Cloud к консоли Google Play SDK .
- Заполните форму поддержки Google Play SDK Console .
В разделе открытых комментариев опишите свой вариант использования, тип запросов к API, которые вы делаете (стандартные, классические или оба), частоту запросов и желаемое максимальное количество запросов в день.
Интегрируйте API Play Integrity в свое приложение
Чтобы интегрировать Play Integrity API в ваше приложение или SDK, выполните одно из следующих действий в зависимости от вашей среды разработки:
Котлин или Java
Последняя версия библиотеки Android для API Play Integrity доступна в репозитории Maven от Google . Добавьте следующую зависимость в файл build.gradle вашего приложения:
implementation 'com.google.android.play:integrity:1.6.0'
Единство
В следующих разделах описывается, как интегрировать и настроить API Google Play Integrity для проектов 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 Правка > Настройки проекта > Менеджер пакетов .
Добавьте OpenUPM как область реестра в окно диспетчера пакетов:
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 пункт Окно > Менеджер пакетов .
В раскрывающемся списке области действия менеджера выберите «Мои реестры» .
Выберите пакет плагина Google Play Integrity для Unity из списка пакетов и нажмите «Установить» .
Импорт из GitHub
Загрузите последнюю версию
.unitypackageс GitHub.Импортируйте файл
.unitypackage, выбрав пункт меню Unity «Активы» > «Импорт пакета» > «Пользовательский пакет» и импортировав все элементы.
Unreal Engine
В следующих разделах описывается, как интегрировать и настроить Google Play Integrity API для проектов Unreal Engine.
Поддерживаемые версии Unreal Engine
Плагин поддерживает Unreal Engine 5.0 и все последующие версии.
Настройте среду разработки
Загрузите плагин Play Unreal Engine из репозитория GitHub.
Скопируйте папку
GooglePlayв папкуPluginsвашего проекта Unreal Engine.Откройте проект Unreal Engine и нажмите Редактировать → Плагины .
Найдите Google Play и установите флажок «Включено» .
Перезапустите игровой проект и запустите сборку.
Откройте файл
Build.csвашего проекта и добавьте модульPlayIntegrityвPublicDependencyModuleNames:using UnrealBuildTool; public class MyGame : ModuleRules { public MyGame(ReadOnlyTargetRules Target) : base(Target) { // ... PublicDependencyModuleNames.Add("PlayIntegrity"); // ... } }
Родной
Следуйте руководству по настройке . Подробнее см. в справочной документации по API Play Integrity.
Настроить ответы API (необязательно)
Ответ API включает вердикты по умолчанию, возвращаемые в каждом запросе. Если вы связали свой проект Cloud с Play Console или Play SDK Console, вы можете настроить ответ API, включив в него дополнительную информацию.
Вердикты о целостности по умолчанию
По умолчанию в ответе API Play Integrity возвращаются следующие вердикты целостности:
| Поле ответа | Ценить | Описание |
|---|---|---|
| Целостность устройства | MEETS_DEVICE_INTEGRITY | Приложение работает на подлинном и сертифицированном устройстве Android. На устройствах Android 13 и выше имеется аппаратное подтверждение того, что загрузчик устройства заблокирован, а загруженная ОС Android является сертифицированным образом производителя устройства. |
| Пусто (пустое значение) | Приложение запущено на устройстве, имеющем признаки атаки (например, перехват API) или взлома системы (например, наличие прав root), либо приложение не запущено на физическом устройстве (например, эмулятор, не прошедший проверку целостности Google Play). | |
| Данные учетной записи Play | LICENSED | У пользователя есть право на использование приложения. Другими словами, пользователь установил или обновил ваше приложение из Google Play на своём устройстве. |
UNLICENSED | У пользователя нет прав на приложение. Это происходит, например, когда пользователь загружает ваше приложение из сторонних источников или не приобретает его в Google Play. | |
UNEVALUATED | Информация о лицензировании не была оценена, поскольку не было выполнено одно из требований. Это могло произойти по нескольким причинам, включая следующие:
| |
| Целостность приложения | PLAY_RECOGNIZED | Приложение и сертификат соответствуют версиям, распространяемым Google Play. |
UNRECOGNIZED_VERSION | Имя сертификата или пакета не соответствует записям Google Play. | |
UNEVALUATED | Целостность приложения не была оценена. Не было выполнено необходимое требование, например, устройство не должно быть достаточно надёжным. |
Google Play Игры для ПК
Если вы распространяете игру в Google Play Games для ПК , вы автоматически соглашаетесь на получение дополнительной метки в вердикте о целостности устройства:
| Поле ответа | Этикетка | Описание |
|---|---|---|
| Целостность устройства | MEETS_VIRTUAL_INTEGRITY | Приложение работает на эмуляторе Android, работающем на базе сервисов Google Play. Эмулятор проходит проверку целостности системы и соответствует основным требованиям совместимости с Android. |
Дополнительные вердикты о целостности
Если вы связали свой облачный проект в Play Console или Play SDK Console, вы можете подписаться на получение дополнительной информации.
Чтобы внести изменения, откройте Play Console и выберите «Тестирование и выпуск» > «Целостность приложения» . Рядом с пунктом «Play Integrity API» нажмите «Настройки» . Нажмите «Изменить ответы» , отредактируйте и сохраните изменения.
Информация об устройстве
Дополнительные метки устройств в вердикте deviceIntegrity предоставляют дополнительную информацию о среде устройства, в которой работает приложение. Одно устройство возвращает несколько меток, если оно соответствует критериям каждой из них. Эти метки можно использовать для создания многоуровневой стратегии контроля. Например, вы можете доверять устройству, возвращающему три метки ( MEETS_STRONG_INTEGRITY , MEETS_DEVICE_INTEGRITY и MEETS_BASIC_INTEGRITY ), больше, чем устройству, возвращающему только одну метку ( MEETS_BASIC_INTEGRITY ).
Атрибуты устройства содержат информацию о версии Android SDK ОС Android, установленной на устройстве. В будущем этот список может быть расширен другими атрибутами устройства.
Недавняя активность устройства отображается в диапазоне от LEVEL_1 (низкое количество запросов) до LEVEL_4 (высокое количество запросов). Высокий уровень активности может указывать на то, что устройство используется для генерации избыточного количества токенов для незаконной рассылки на ненадежные устройства.
Функция отзыва устройств позволяет вам сохранять некоторые индивидуальные данные для каждого устройства, которые вы сможете надежно извлечь при повторной установке приложения на том же устройстве.
После того, как вы согласитесь на предоставление дополнительной информации, ваш ответ API будет включать новые поля и ответы в вердикте:
| Поле ответа | Этикетка | Описание | |
|---|---|---|---|
| Целостность устройства | MEETS_BASIC_INTEGRITY | Приложение запущено на устройстве, прошедшем базовые проверки целостности системы. Загрузчик устройства может быть заблокирован или разблокирован, а состояние загрузки может быть верифицированным или неверифицированным. Устройство может быть несертифицированным, в этом случае Google не может предоставить никаких гарантий безопасности, конфиденциальности или совместимости приложения. В Android 13 и более поздних версиях для вердикта MEETS_BASIC_INTEGRITY требуется, чтобы корень доверия для аттестации был предоставлен Google. | |
MEETS_STRONG_INTEGRITY | Приложение работает на подлинном и сертифицированном устройстве Android с последним обновлением безопасности.
| ||
| Атрибуты устройства | sdkVersion: 19, 20, ..., 36 | Версия 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 | Это значения битов, которые вы установили ранее для конкретного устройства. Вы сами определяете значение каждого бита. По умолчанию три бита имеют значение «ложь». | |
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird | Это даты записи значений битов в формате UTC с точностью до года и месяца. Дата записи бита отзыва обновляется каждый раз, когда бит устанавливается в значение «истина», и удаляется, когда бит устанавливается в значение «ложь». | ||
Подробности об окружающей среде
Риск доступа к приложениям показывает, запущены ли другие приложения, которые могут использоваться для захвата экрана, отображения оверлеев или управления устройством. Проверенные службы специальных возможностей, известные Google Play, автоматически исключаются из этого вердикта.
Вердикт Play Protect сообщает, включена ли функция Google Play Protect на устройстве и обнаружено ли известное вредоносное ПО.
После того, как вы согласитесь на предоставление дополнительной информации, ваш ответ API будет включать новые поля и ответы в вердикте:
| Поле ответа | Ценить | Описание |
|---|---|---|
| Вердикт о риске доступа к приложению | KNOWN_INSTALLED | Приложения устанавливаются через Google Play или предварительно загружаются в системный раздел производителем устройства. |
KNOWN_CAPTURING | Запускаются приложения, установленные через Google Play или предварительно загруженные на устройство, которые можно использовать для чтения или захвата входных и выходных данных запрашивающего приложения, например приложения для записи экрана. | |
KNOWN_CONTROLLING | Запускаются приложения, установленные через Google Play или предварительно загруженные на устройство, которые можно использовать для управления устройством, а также входами и выходами запрашивающего приложения, например приложения удаленного управления. | |
KNOWN_OVERLAYS | Запущены приложения, установленные через Google Play или предварительно загруженные на устройство, которые могут отображать наложения на запрашивающем приложении. | |
UNKNOWN_INSTALLED | Устанавливаются другие приложения, которые не были установлены Google Play или предварительно загружены в системный раздел производителем устройства. | |
UNKNOWN_CAPTURING | Запущены другие приложения (не установленные Play и не предзагруженные на устройство), которые можно использовать для чтения или захвата входных и выходных данных запрашивающего приложения, например приложения для записи экрана. | |
UNKNOWN_CONTROLLING | Запущены другие приложения (не установленные Play и не предзагруженные на устройство), которые можно использовать для управления устройством, а также входами и выходами запрашивающего приложения, например приложения удаленного управления. | |
UNKNOWN_OVERLAYS | Запущены другие приложения (не установленные Play и не предустановленные на устройстве), которые могут отображать наложения на запрашивающем приложении. | |
| Пусто (пустое значение) | Риск доступа к приложению не оценивается, если необходимое требование не выполнено. В этом случае поле appAccessRiskVerdict пусто. Это может произойти по нескольким причинам, включая следующие:
| |
| Вердикт Play Protect | NO_ISSUES | Play Protect включен и не обнаружил никаких проблем с приложением на устройстве. |
NO_DATA | Play Protect включен, но сканирование ещё не проводилось. Возможно, устройство или приложение Play Маркет недавно были сброшены. | |
POSSIBLE_RISK | Функция Play Protect отключена. | |
MEDIUM_RISK | Функция Play Protect включена и обнаружила на устройстве потенциально опасные приложения. | |
HIGH_RISK | Функция Play Protect включена и обнаружила на устройстве опасные приложения. | |
UNEVALUATED | Вердикт Play Protect не был рассмотрен. Не было выполнено необходимое условие, например, устройство не должно быть достаточно надёжным. |
Настройте параметры классического запроса (необязательно)
Пропустите этот раздел, если вы планируете делать только стандартные запросы API .
По умолчанию шифрованием ответов управляет Google Play, то есть ваш бэкенд обращается к серверу Google для расшифровки вердиктов. Кроме того, вы можете самостоятельно управлять ключами для расшифровки локально в защищённой серверной среде.
Позвольте Google управлять шифрованием вашего ответа (рекомендуется)
Мы рекомендуем разрешить Google генерировать и управлять ключами для защиты безопасности вашего приложения. Ваш бэкенд будет обращаться к серверу Google Play для расшифровки и проверки ответов.
Управляйте собственными ключами шифрования
Для локальной расшифровки в вашей защищенной серверной среде вы можете загрузить ключи шифрования из Play Console или Play SDK Console. Для использования этой функции ваше приложение должно быть доступно в Google Play.
Прежде чем изменять стратегию управления шифрованием ответов в Play Console, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play, чтобы избежать сбоев.
Переключение между ключами шифрования, управляемыми Google, и ключами шифрования, управляемыми самостоятельно
- Откройте Play Console и выберите свое приложение.
- Перейдите в раздел Тестирование и выпуск > Целостность приложения .
- Рядом с Play Integrity API нажмите Настройки .
- В разделе Классические запросы , рядом с пунктом Шифрование ответов , нажмите Изменить .
Чтобы перейти на самостоятельное управление ключами:
- Выберите «Управление» и загрузите мои ключи шифрования ответов , а затем загрузите свой открытый ключ.
- Нажмите «Сохранить» , чтобы автоматически загрузить зашифрованные ключи.
- Обновите защищенный внутренний сервер для локальной расшифровки с помощью этих ключей.
Чтобы перейти на ключи, управляемые Google:
- Выберите Разрешить Google управлять шифрованием моих ответов (рекомендуется) .
- Нажмите Сохранить изменения .