На этой странице объясняется, как настроить приложение или игру для использования API Play Integrity. Вам необходимо включить ответы API, а затем интегрировать API в приложение и его внутренний сервер. Дополнительные параметры настройки, функции тестирования и отчётности станут доступны после подключения проекта Google Cloud, используемого для API Play Integrity, в консоли Google Play.
Включить ответы API Play Integrity
Каждое приложение или SDK, вызывающее Play Integrity API, должно использовать проект Google Cloud для мониторинга использования API. Приложения в Google Play могут подключить проект Cloud в Google Play Console для включения ответов Play Integrity API. Если вы хотите создать новый проект Cloud или ваше приложение распространяется исключительно за пределами Google Play, вы можете включить ответы Play Integrity API в Google Cloud Console.
Настроить в Google Play Console (рекомендуется)
Включив ответы Play Integrity API в Google Play Console , вы получите доступ к дополнительным параметрам конфигурации, функциям тестирования и отчётности API. Эта возможность доступна только для приложений, распространяемых в Google Play. Перейдите в раздел «Выпуск» > «Целостность приложения» . В разделе «Play Integrity API» выберите «Связать с облачным проектом» . Выберите облачный проект, который вы хотите связать со своим приложением, и это включит ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в своё приложение.
Настройка в Google Cloud Console
В консоли Google Cloud Console создайте новый проект Cloud или выберите существующий проект Cloud, который вы хотите использовать с API Play Integrity. Перейдите в раздел API и службы . Выберите «Включить API и службы» . Найдите Play Integrity API и включите его. Теперь вы можете интегрировать API Play Integrity в своё приложение.
Инструкции по настройке для поставщиков SDK
Поставщики SDK должны использовать собственный проект Google Cloud для вызова API Play Integrity, чтобы использование API относилось к SDK, а не к отдельным приложениям, использующим его. Это означает, что приложениям, использующим ваш SDK, не нужно отдельно настраивать API Play Integrity. Ваши запросы к API Play Integrity автоматически учитываются при использовании API вашего SDK, а не приложения.
У разработчиков SDK есть два варианта настройки Play Integrity API: Google Play SDK Console или Google Cloud Console.
Используйте Google Play SDK Console (рекомендуется)
Включив ответы Play Integrity API в консоли Google Play SDK, вы получите доступ к дополнительным параметрам конфигурации. Перейдите в раздел «Целостность SDK» и нажмите «Настройки» . В разделе «Конфигурация проекта» выберите «Связать облачный проект» . Выберите облачный проект, который вы хотите связать со своим SDK, и это включит ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в свой SDK. Обратите внимание, что доступ к консоли Google Play SDK предоставляется при соблюдении критериев соответствия .
Используйте Google Cloud Console
Вы можете включить ответы Play Integrity API из консоли Google Cloud. В консоли Google Cloud создайте новый проект Cloud или выберите существующий проект Cloud, который вы хотите использовать с Play Integrity API. Перейдите в раздел API и службы . Выберите «Включить API и службы» . Найдите Play Integrity API и включите его. Теперь вы можете интегрировать Play Integrity API в свой SDK.
Увеличьте количество ежедневных запросов API Play Integrity вашего SDK
Поставщикам SDK, желающим увеличить максимальное количество ежедневных запросов, следует заполнить форму запроса квоты . В разделе открытых комментариев укажите, что вы делаете запрос SDK, и укажите свои координаты Maven ( groupId:artifactId
) или URL-адрес вашего SDK.
Ограничения на использование API Play Integrity
Максимальное количество запросов для вашего приложения — 10 000 в день. Вы можете запросить увеличение этого дневного лимита, если вашему приложению потребуется обрабатывать большее количество пользователей, следуя инструкциям ниже.
Действие | Ежедневная квота на приложение | Примечания |
---|---|---|
Запросы токенов | 10,000 | Используется совместно с классическими запросами и стандартными подготовками токенов |
Расшифровка токенов на серверах Google | 10,000 | Распространяется на классические и стандартные запросы |
Увеличьте максимальное количество ежедневных запросов
Чтобы претендовать на увеличение максимального количества ежедневных запросов, ваше приложение должно быть доступно в Google Play, а также на других каналах распространения. Даже при увеличении максимального количества ежедневных запросов вам следует продолжать ограничивать количество классических запросов на пользователя редкими, но высокоценными действиями, чтобы экономить пользовательские данные и заряд батареи.
Чтобы запросить увеличение максимального количества ежедневных запросов, выполните следующие действия:
- Подключите проект Google Cloud, который вы используете для API Play Integrity в Play Console.
- Убедитесь, что вы правильно реализуете логику API, включая рекомендуемую стратегию повторных попыток.
- Подайте запрос на увеличение квоты, используя эту форму .
Увеличение квоты Play Integrity API может занять до недели, поэтому мы настоятельно рекомендуем отслеживать использование Play Integrity API в Google Play Console или в Google Cloud Console, где вы также можете настроить оповещения о квоте , чтобы избежать перебоев в предоставлении услуг.
Увеличение квоты автоматически применяется как к клиентскому вызову для генерации токенов целостности, так и к серверному вызову для расшифровки и проверки токенов целостности.
Интегрируйте API Play Integrity в свое приложение
Чтобы интегрировать Play Integrity API в ваше приложение или SDK, выполните одно из следующих действий в зависимости от вашей среды разработки:
Котлин или Java
Последняя версия библиотеки Android для API Play Integrity доступна в репозитории Maven от Google . Добавьте следующую зависимость в файл build.gradle
вашего приложения:
implementation 'com.google.android.play:integrity:1.4.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.integrity
OpenUPM
Откройте настройки менеджера пакетов , выбрав пункт меню 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"); // ... } }
Родной
Установите Play Core Native SDK 1.13.0 или более поздней версии. Инструкции см. в руководстве по настройке среды разработки Play Core Native.
Настроить ответы API (необязательно)
Ответ API включает вердикты по умолчанию, возвращаемые в каждом запросе. Если вы настроите интеграцию API Play Integrity в Play Console, вы сможете настроить ответ API.
Ответы по умолчанию
По умолчанию в ответе API Play Integrity возвращаются следующие вердикты целостности:
Поле ответа | Ценить | Описание |
---|---|---|
Целостность устройства | MEETS_DEVICE_INTEGRITY | Приложение работает на настоящем устройстве Android, сертифицированном Play Protect. На устройствах 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 Games для ПК , вы автоматически соглашаетесь на получение дополнительной метки в вердикте о целостности устройства:
Поле ответа | Этикетка | Описание |
---|---|---|
Целостность устройства | MEETS_VIRTUAL_INTEGRITY | Приложение работает на эмуляторе Android, работающем на базе сервисов Google Play. Эмулятор проходит проверку целостности системы и соответствует основным требованиям совместимости с Android. |
Дополнительные ответы
Если вы настроили интеграцию API Play Integrity в Play Console или Play SDK Console, вы можете подписаться на получение информации в ответе API.
Чтобы внести изменения в ответы API, откройте Play Console и выберите Release > App integrity . В разделе Responses отредактируйте и сохраните изменения.
Дополнительная информация об устройстве и отзыв устройства
Приложения и SDK могут выбрать дополнительные метки устройств в вердикте целостности устройства. После того, как вы согласитесь получать дополнительные метки, ответ о целостности будет включать несколько меток для одного и того же устройства, если все критерии метки будут соблюдены. Вы можете настроить свой внутренний сервер на различное поведение в зависимости от диапазона возможных ответов. Например, устройство, возвращающее три метки ( MEETS_STRONG_INTEGRITY
, MEETS_DEVICE_INTEGRITY
и MEETS_BASIC_INTEGRITY
), может быть более доверенным, чем устройство, возвращающее только одну метку ( MEETS_BASIC_INTEGRITY
).
Вы можете включить атрибуты устройства , которые сообщают версию Android SDK ОС Android, установленной на устройстве. В будущем эти атрибуты могут быть расширены другими атрибутами устройства.
Вы можете включить отслеживание недавней активности устройства . Уровень недавней активности устройства может варьироваться от LEVEL_1
(низкое количество запросов) до LEVEL_4
(высокое количество запросов). Например, устройство, которое возвращает значительно более высокий уровень активности, чем типичный для вашего приложения, может пытаться сгенерировать большое количество токенов целостности для распространения на ненадёжные устройства.
Приложения также могут использовать функцию отзыва устройств . Функция отзыва устройств позволяет сохранять некоторые индивидуальные данные для каждого устройства, которые можно будет надежно извлечь при повторной установке приложения на то же устройство.
После того как вы согласитесь на получение дополнительной информации об устройстве и отзыва устройства, ваш ответ API будет включать новые поля целостности устройства и ответы в вердикте:
Поле ответа | Этикетка | Описание | |
---|---|---|---|
Целостность устройства | MEETS_BASIC_INTEGRITY | Приложение запущено на устройстве, прошедшем базовые проверки целостности системы. Загрузчик устройства может быть заблокирован или разблокирован, а состояние загрузки может быть верифицированным или неверифицированным. Устройство может не иметь сертификата Play Protect, в этом случае Google не может предоставить никаких гарантий безопасности, конфиденциальности или совместимости приложения. В Android 13 и более поздних версиях для вердикта MEETS_BASIC_INTEGRITY требуется, чтобы корень доверия был предоставлен Google. | |
MEETS_STRONG_INTEGRITY | Приложение работает на настоящем устройстве Android, сертифицированном Play Protect, с последним обновлением безопасности.
| ||
Атрибуты устройства | 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 с точностью до года и месяца. Дата записи бита отзыва обновляется каждый раз, когда бит устанавливается в значение «истина», и удаляется, когда бит устанавливается в значение «ложь». |
Дополнительные сведения об окружающей среде
Приложения могут получать дополнительные вердикты об окружающей среде. Проверка доступа приложений позволяет узнать, запущены ли другие приложения, которые могут делать снимки экрана, отображать оверлеи или управлять устройством. Проверка Play Protect позволяет узнать, включена ли функция 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 по умолчанию управляют шифрованием ответов, которое ваше приложение использует при взаимодействии с API Play Integrity. Мы рекомендуем использовать этот вариант по умолчанию, но вы также можете управлять ключами шифрования ответов и загружать их, следуя инструкциям ниже.
Позвольте Google управлять шифрованием вашего ответа (по умолчанию и рекомендуется)
Для защиты безопасности вашего приложения рекомендуется разрешить Google генерировать и управлять ключами шифрования ваших ответов. Ваш внутренний сервер будет обращаться к серверу Google Play для расшифровки ответов.
Управляйте моими ключами шифрования ответов и скачивайте их
Если вы хотите расшифровать результат проверки целостности локально в своей защищенной серверной среде, вы можете управлять ключами шифрования ответов и загружать их. Для управления ключами шифрования ответов и их загрузки необходимо использовать Play Console, а ваше приложение должно быть доступно в Google Play и других каналах распространения. Следуйте инструкциям ниже, чтобы перейти от управления ключами шифрования ответов Google к самостоятельному управлению ключами шифрования ответов.
Помните, что не следует расшифровывать или проверять полученный токен из клиентского приложения, а также никогда не передавайте клиентскому приложению какие-либо ключи дешифрования.
Прежде чем изменять стратегию управления шифрованием ответов в Play Console, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play, чтобы избежать сбоев.
Переключение между ключами шифрования ответов, управляемыми Google, и ключами шифрования ответов, управляемыми самостоятельно
Если в настоящее время шифрованием ваших ответов управляет Google, и вы хотите самостоятельно управлять ключами шифрования ответов и загружать их, выполните следующие действия:
- Войдите в Play Console .
- Выберите приложение, использующее API Play Integrity.
- В разделе «Выпуск» левого меню перейдите в раздел «Целостность приложения» .
- Рядом с Play Integrity API нажмите Настройки .
- В разделе «Классические запросы» на этой странице, рядом с опцией «Шифрование ответов» , нажмите кнопку «Изменить» .
- В появившемся окне нажмите «Управление» и загрузите мои ключи шифрования ответов .
- Следуйте инструкциям по загрузке открытого ключа.
- После того, как в окне появится сообщение об успешной загрузке, нажмите кнопку «Сохранить» , и ваши зашифрованные ключи загрузятся автоматически.
- Измените логику вашего сервера таким образом, чтобы вы могли расшифровывать и проверять токены целостности локально, в вашей собственной защищенной серверной среде, используя ваши ключи шифрования ответов.
- (Необязательно) Если вы самостоятельно управляете ключами шифрования ответов, ваше приложение все равно может обратиться к серверу Google Play для расшифровки и проверки ответа.
Если вы самостоятельно управляете ключами шифрования ответов и хотите передать управление шифрованием ответов Google, выполните следующие действия:
- Измените логику сервера так, чтобы расшифровка и проверка выполнялись исключительно на серверах Google.
- Войдите в Play Console .
- Выберите приложение, использующее API Play Integrity.
- В разделе «Выпуск» левого меню перейдите в раздел «Целостность приложения» .
- Рядом с Play Integrity API нажмите Настройки .
- В разделе «Классические запросы» на этой странице, рядом с опцией «Шифрование ответов» , нажмите кнопку «Изменить» .
- В появившемся окне нажмите Разрешить Google управлять шифрованием моих ответов (рекомендуется) .
- Нажмите Сохранить изменения .