На этой странице объясняется, как настроить ваше приложение, игру или SDK для использования API Play Integrity. Для интеграции API вам необходим проект Google Cloud, который необходим для начала отправки запросов. Затем вы можете связать свой проект Google Cloud в консоли Google Play (для приложений) или консоли Google Play SDK (для SDK). Связывание проекта необходимо для доступа к дополнительным параметрам конфигурации, функциям тестирования, отчетам API и для запроса увеличения вашей ежедневной квоты запросов.
Включить API обеспечения целостности игры
Каждое приложение или SDK, обращающееся к Play Integrity API, должно иметь проект Google Cloud для использования API и мониторинга использования. Это обязательный первый шаг для всех интеграций. Вы можете включить Play Integrity API в консоли Google Cloud или сразу перейти к связыванию вашего проекта Cloud с Google Play, и Play Integrity API будет включен автоматически.
В консоли Google Cloud создайте новый проект 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 и выберите своё приложение.
- Перейдите в раздел «Тестирование и выпуск» > «Целостность приложения» .
- В разделе Play Integrity API нажмите «Привязать облачный проект» .
- Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API; если Play Integrity API еще не включен для проекта, он будет включен автоматически при связывании.
Для поставщиков SDK в консоли Play SDK
Разработчики SDK, использующие консоль Google Play SDK, могут связать свой проект Google Cloud, чтобы приписывать использование API именно SDK, а не отдельным приложениям, его использующим, включать дополнительные функции и запрашивать увеличение ежедневной квоты на использование API. Обратите внимание, что доступ к консоли Google Play SDK предоставляется при соблюдении определенных критериев соответствия .
- Откройте консоль Google Play SDK и выберите свой SDK.
- Перейдите в раздел «Целостность SDK» .
- В разделе Play Integrity API нажмите «Привязать облачный проект» .
- Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API; если Play Integrity API еще не включен для проекта, он будет включен автоматически при связывании.
Ознакомьтесь с ограничениями на использование API обеспечения целостности игры.
Для вашего приложения или SDK установлен стандартный дневной лимит в 10 000 запросов, привязанный к номеру соответствующего облачного проекта. Если вы ожидаете большего объема запросов, вы можете запросить увеличение квоты.
| Действие | Суточная квота | Примечания |
|---|---|---|
| Запросы токенов | 10 000 | Используется как для классических запросов, так и для стандартной подготовки токенов. |
| Расшифровка токенов на серверах Google | 10 000 | Используется как в классических, так и в стандартных запросах. |
Увеличьте максимальное количество запросов в день.
Увеличение квоты зависит от соответствия критериям. Увеличение квоты распространяется как на генерацию токенов на стороне клиента, так и на вызовы расшифровки на стороне сервера. Обработка запросов может занять до недели. Мы рекомендуем отслеживать использование Play Integrity API в консоли Google Cloud и настраивать оповещения о превышении квоты, чтобы избежать перебоев в работе сервиса.
Даже при увеличении квоты продолжайте ограничивать классические запросы редкими, но важными действиями, чтобы экономить заряд батареи и трафик пользователя.
Приложения и игры в Google Play
Для увеличения квоты ваше приложение должно быть доступно в Google Play в дополнение к любым другим каналам распространения. Необходимо связать ваш проект Google Cloud с вашим приложением в Play Console . Запросы на квоты от несвязанных проектов будут отклонены.
Чтобы запросить повышение:
- Подключите соответствующий проект Google Cloud в консоли Play .
- Убедитесь, что вы правильно реализовали логику API, включая соответствующие стратегии повторных попыток.
- Отправьте форму запроса на квоту .
Для поставщиков SDK в консоли Play SDK
Для получения увеличения квоты ваш SDK должен быть зарегистрирован в консоли Google Play SDK, а ваш облачный проект должен быть связан с вашим SDK там же. Доступ к консоли Google Play SDK предоставляется при соблюдении критериев соответствия .
Чтобы запросить повышение:
- Подключите свой проект Google Cloud в консоли Google Play SDK .
- Заполните форму заявки в службу поддержки разработчиков .
В комментариях укажите данные о вашем SDK, опишите сценарий использования, тип API-запросов (стандартный, классический или оба), частоту запросов и желаемый максимальный суточный лимит запросов.
Интегрируйте API проверки целостности игр в ваше приложение.
Для интеграции API Play Integrity в ваше приложение или SDK выполните одно из следующих действий в зависимости от вашей среды разработки:
Kotlin или Java
Последняя версия библиотеки Android для Play Integrity API доступна в репозитории Maven от Google . Добавьте следующую зависимость в файл build.gradle вашего приложения:
implementation 'com.google.android.play:integrity:1.6.0'
Единство
В следующих разделах описывается, как интегрировать и настроить 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 пункт «Редактировать» > «Настройки проекта» > «Менеджер пакетов» .
Добавьте 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 пункт Assets > Import package > Custom Package и импортировав все элементы.
Unreal Engine
В следующих разделах описывается, как интегрировать и настроить API Google Play Integrity для проектов 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 включает в себя результаты по умолчанию, возвращаемые в каждом запросе. Если вы связали свой облачный проект в консоли Play или консоли Play SDK, вы можете настроить ответ API, включив в него дополнительную информацию.
Вердикты по обеспечению целостности по умолчанию
По умолчанию в ответе API Play Integrity возвращаются следующие результаты проверки целостности:
| Поле ответа | Ценить | Описание |
|---|---|---|
| целостность устройства | MEETS_DEVICE_INTEGRITY | Приложение работает на подлинном и сертифицированном устройстве Android. На устройствах с Android 13 и выше имеется аппаратное подтверждение того, что загрузчик устройства заблокирован, а загруженная ОС Android представляет собой сертифицированный производителем устройства образ. |
| Пустое значение (пустой символ) | Приложение работает на устройстве, имеющем признаки атаки (например, перехват API) или компрометации системы (например, рутирование), либо приложение работает не на физическом устройстве (например, на эмуляторе, не прошедшем проверку целостности Google 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 | Это битовые значения, которые вы установили ранее для конкретного устройства. Вы сами определяете значение каждого бита. По умолчанию все три битовых значения имеют значение false. | |
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird | Это даты записи битовых значений в формате UTC с точностью до года и месяца. Дата записи бита восстановления обновляется каждый раз, когда бит устанавливается в значение true, и удаляется, когда бит устанавливается в значение false. | ||
Детали окружающей среды
Риск доступа к приложению показывает, запущены ли другие приложения, которые могут быть использованы для захвата экрана, отображения наложений или управления устройством. Проверенные сервисы специальных возможностей, известные 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 Store и не предустановленные на устройстве), которые могут использоваться для чтения или захвата входных и выходных данных запрашивающего приложения, например, приложения для записи экрана. | |
UNKNOWN_CONTROLLING | Запущены и другие приложения (не установленные через Play или предустановленные на устройстве), которые могут использоваться для управления устройством, а также входами и выходами запрашивающего приложения, например, приложения для дистанционного управления. | |
UNKNOWN_OVERLAYS | Запущены другие приложения (не установленные через Play или предустановленные на устройстве), которые могут отображать наложения поверх запрашивающего приложения. | |
| Пустое значение (пустой символ) | Оценка риска доступа к приложению не производится, если не выполнено необходимое условие. В этом случае поле appAccessRiskVerdict пустое. Это может произойти по нескольким причинам, в том числе по следующим:
| |
| Вердикт по игре Play Protect | NO_ISSUES | Функция Play Protect включена, и никаких проблем с приложениями на устройстве обнаружено не было. |
NO_DATA | Функция Play Protect включена, но сканирование еще не выполнялось. Возможно, устройство или приложение Play Store были недавно сброшены до заводских настроек. | |
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, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play во избежание сбоев.
Переключайтесь между ключами шифрования, управляемыми Google, и ключами, управляемыми вами самостоятельно.
- Откройте Play Console и выберите своё приложение.
- Перейдите в раздел «Тестирование и выпуск» > «Целостность приложения» .
- Рядом с пунктом Play Integrity API нажмите «Настройки» .
- В разделе «Классические запросы» , рядом с пунктом «Шифрование ответа» , нажмите «Редактировать» .
Чтобы переключиться на самостоятельно управляемые ключи:
- Выберите «Управление» и загрузите мои ключи шифрования ответа , затем загрузите свой открытый ключ.
- Нажмите «Сохранить» , чтобы автоматически загрузить зашифрованные ключи.
- Обновите свой защищенный сервер, чтобы расшифровка происходила локально с помощью этих ключей.
Чтобы переключиться на ключи, управляемые Google:
- Выберите « Разрешить Google управлять шифрованием моего ответа (рекомендуется)» .
- Нажмите «Сохранить изменения» .