Настройка

На этой странице объясняется, как настроить приложение или игру для использования API Play Integrity. Вам необходимо включить ответы от API, а затем интегрировать API в свое приложение и его внутренний сервер. Дополнительные параметры конфигурации, функции тестирования и отчеты станут доступны после привязки проекта Google Cloud, который вы используете для API Play Integrity, в консоли Google Play.

Включить ответы API Play Integrity

Каждое приложение или SDK, вызывающие API Play Integrity, должны использовать проект Google Cloud для мониторинга использования API. Приложения в Google Play могут связать проект Cloud в Google Play Console, чтобы включить ответы API Play Integrity. Если вы хотите создать новый проект Cloud или ваше приложение распространяется исключительно за пределами Google Play, вы можете включить ответы API Play Integrity из своей консоли Google Cloud Console.

Настроить в Google Play Console (рекомендуется)

Включив ответы Play Integrity API в Google Play Console , вы получите доступ к дополнительным параметрам конфигурации, функциям тестирования и отчетам API. Эта опция доступна только для приложений, распространяемых в Google Play. Перейдите в Release > App integrity . В разделе Play Integrity API выберите Link a Cloud project . Выберите облачный проект, который вы хотите связать со своим приложением, и это включит ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в свое приложение.

Настройка в Google Cloud Console

В консоли Google Cloud Console создайте новый проект Cloud или выберите существующий проект Cloud, который вы хотите использовать с API Play Integrity. Перейдите в раздел API и службы . Выберите включить API и службы . Найдите API Play Integrity и включите его. Теперь вы можете интегрировать API Play Integrity в свое приложение.

Инструкции по настройке для поставщиков SDK

Поставщики SDK должны использовать собственный проект Google Cloud для вызова API Play Integrity, чтобы использование API приписывалось SDK, а не отдельным приложениям, использующим SDK. Это означает, что приложениям, использующим ваш SDK, не нужно индивидуально настраивать API Play Integrity. Ваши запросы к API Play Integrity автоматически учитываются в использовании API вашего SDK, а не приложения.

У разработчиков SDK есть два варианта настройки Play Integrity API: Google Play SDK Console или Google Cloud Console.

Включив ответы Play Integrity API в Google Play SDK Console, вы получите доступ к дополнительным параметрам конфигурации. Перейдите в раздел «Целостность SDK» и нажмите «Настройки» . В разделе «Конфигурация проекта» выберите «Связать проект Cloud» . Выберите проект Cloud, который вы хотите связать с вашим SDK, и это включит ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в свой SDK. Обратите внимание, что доступ к Google Play SDK Console зависит от критериев соответствия .

Используйте Google Cloud Console

Вы можете включить ответы Play Integrity API из вашей Google Cloud Console. В вашей Google Cloud Console создайте новый проект 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 в дополнение к любым другим каналам распространения. Даже при увеличении ежедневного максимума вам следует продолжать ограничивать классические запросы на пользователя нечастыми, высокоценными действиями, чтобы сохранить пользовательские данные и батарею.

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

  1. Подключите проект Google Cloud, который вы используете для API Play Integrity в Play Console.
  2. Убедитесь, что вы правильно реализуете логику API, включая рекомендуемую стратегию повторных попыток.
  3. Запросите увеличение квоты, используя эту форму .

Увеличение квоты API Play Integrity может занять до недели, поэтому мы настоятельно рекомендуем отслеживать использование API Play Integrity в консоли Google Play или в консоли Google Cloud, где вы также можете настроить оповещения о квоте , чтобы избежать перебоев в работе вашего сервиса.

Увеличение квоты автоматически применяется как к клиентскому вызову для генерации токенов целостности, так и к серверному вызову для расшифровки и проверки токенов целостности.

Интегрируйте API Play Integrity в свое приложение

Чтобы интегрировать API Play Integrity в свое приложение или 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

  1. Откройте настройки менеджера пакетов , выбрав пункт меню Unity Правка > Настройки проекта > Менеджер пакетов .

  2. Добавьте 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
    
  3. Откройте меню менеджера пакетов , выбрав пункт меню Unity Окно > Менеджер пакетов .

  4. В раскрывающемся списке области действия менеджера выберите «Мои реестры» .

  5. Выберите пакет плагина Google Play Integrity для Unity из списка пакетов и нажмите «Установить» .

Импорт из GitHub

  1. Загрузите последнюю версию .unitypackage с GitHub.

  2. Импортируйте файл .unitypackage , выбрав пункт меню Unity «Активы» > «Импорт пакета» > «Пользовательский пакет» и импортировав все элементы.

Нереальный движок

В следующих разделах описывается, как интегрировать и настроить Google Play Integrity API для проектов Unreal Engine.

Поддерживаемые версии Unreal Engine

Плагин поддерживает Unreal Engine 5.0 и все последующие версии.

Настройте среду разработки

  1. Загрузите плагин Play Unreal Engine из репозитория GitHub.

  2. Скопируйте папку GooglePlay в папку Plugins вашего проекта Unreal Engine.

  3. Откройте проект Unreal Engine и нажмите «Правка» → «Плагины» .

  4. Найдите Google Play и установите флажок «Включено» .

  5. Перезапустите игровой проект и запустите сборку.

  6. Откройте файл 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.

Ответы по умолчанию

По умолчанию в ответе Play Integrity API возвращаются следующие вердикты целостности:

Поле ответа Ценить Описание
Целостность устройства MEETS_DEVICE_INTEGRITY Приложение работает на подлинном устройстве Android, сертифицированном Play Protect. На Android 13 и выше есть аппаратное подтверждение того, что загрузчик устройства заблокирован, а загруженная ОС Android является сертифицированным образом производителя устройства.
Пусто (пустое значение) Приложение запущено на устройстве, имеющем признаки атаки (например, перехват API) или взлома системы (например, наличие прав root), или приложение запущено не на физическом устройстве (например, эмулятор, не прошедший проверку целостности Google Play).
Данные учетной записи Play LICENSED У пользователя есть право на приложение. Другими словами, пользователь установил или обновил ваше приложение из Google Play на своем устройстве.
UNLICENSED У пользователя нет права на приложение. Это происходит, когда, например, пользователь загружает ваше приложение извне или не приобретает его из Google Play.
UNEVALUATED Детали лицензирования не были оценены, поскольку требование было пропущено. Это могло произойти по нескольким причинам, включая следующие:
  • Устройство недостаточно надежно.
  • Пользователь не авторизован в Google Play.
  • Версия вашего приложения, установленного на устройстве, неизвестна Google Play.
Целостность приложения 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, с последним обновлением безопасности.
  • На Android 13 и выше вердикт MEETS_STRONG_INTEGRITY требует MEETS_DEVICE_INTEGRITY и обновлений безопасности за последний год для всех разделов устройства, включая исправление раздела ОС Android и исправление раздела поставщика.
  • На Android 12 и ниже вердикт MEETS_STRONG_INTEGRITY требует только аппаратного подтверждения целостности загрузки и не требует, чтобы устройство имело последнее обновление безопасности. Поэтому при использовании MEETS_STRONG_INTEGRITY рекомендуется также учитывать версию Android SDK в поле deviceAttributes .
Атрибуты устройства sdkVersion: 19, 20, ..., 35 Версия 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 Недавняя активность устройства не была оценена. Это могло произойти по следующим причинам:
  • Устройство недостаточно надежно.
  • Версия вашего приложения, установленного на устройстве, неизвестна Google Play.
  • На устройстве возникли технические неполадки.
Отзыв устройства values: bitFirst, bitSecond, bitThird Это значения битов, которые вы установили в прошлом для конкретного устройства. Вы определяете значение каждого бита. Три значения битов по умолчанию ложны.
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird Это даты записи битовых значений в UTC с точностью до года и месяца. Дата записи бита отзыва обновляется каждый раз, когда бит устанавливается в значение true, и удаляется, когда бит устанавливается в значение false.

Дополнительные сведения об окружающей среде

Приложения могут выбрать получение дополнительных вердиктов об окружающей среде. Риск доступа к приложениям позволяет узнать, запущены ли другие приложения, которые могут захватывать экран, отображать наложения или управлять устройством. Вердикт 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 пустое. Это может произойти по нескольким причинам, включая следующие:
  • Устройство недостаточно надежно.
  • Форм-фактор устройства не соответствует типу телефона, планшета или складного устройства.
  • Устройство не работает под управлением Android 6 (уровень API 23) или выше.
  • Версия вашего приложения, установленного на устройстве, неизвестна Google Play.
  • Версия Google Play Store на устройстве устарела.
  • Только игры : у учетной записи пользователя нет лицензии Play для игры.
  • Использован стандартный запрос с параметром verdictOptOut .
  • Стандартный запрос использовался с версией библиотеки Play Integrity API, которая пока не поддерживает риск доступа к приложению для стандартных запросов.
Вердикт 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 управляют шифрованием ответа, которое ваше приложение использует при взаимодействии с API Play Integrity. Хотя мы рекомендуем вам использовать этот параметр по умолчанию, вы также можете управлять и загружать ключи шифрования ответа, следуя инструкциям ниже.

Позвольте Google управлять шифрованием вашего ответа (по умолчанию и рекомендуется)

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

Управляйте и скачивайте мои ключи шифрования ответов

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

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

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

Переключение между ключами шифрования ответов, управляемыми Google, и ключами шифрования ответов, управляемыми самостоятельно

Если в настоящее время шифрованием ваших ответов управляет Google и вы хотите самостоятельно управлять ключами шифрования ответов и загружать их, выполните следующие действия:

  1. Войдите в Play Console .
  2. Выберите приложение, использующее API Play Integrity.
  3. В разделе «Выпуск» левого меню перейдите в раздел «Целостность приложения» .
  4. Рядом с Play Integrity API нажмите Настройки .
  5. В разделе «Классические запросы» на странице рядом с пунктом «Шифрование ответа » нажмите «Изменить» .
  6. В появившемся окне нажмите «Управление» и загрузите мои ключи шифрования ответов .
  7. Следуйте инструкциям по загрузке открытого ключа.
  8. После того, как в окне появится сообщение об успешной загрузке, нажмите кнопку «Сохранить» , и ваши зашифрованные ключи загрузятся автоматически.
  9. Измените логику сервера таким образом, чтобы вы могли расшифровывать и проверять токены целостности локально, в собственной защищенной серверной среде, используя ключи шифрования ответов.
  10. (Необязательно) Если вы самостоятельно управляете ключами шифрования ответов, ваше приложение по-прежнему может обратиться к серверу Google Play для расшифровки и проверки ответа.

Если вы самостоятельно управляете ключами шифрования ответов и хотите передать управление шифрованием ответов Google, выполните следующие действия:

  1. Измените логику сервера так, чтобы расшифровка и проверка выполнялись исключительно на серверах Google.
  2. Войдите в Play Console .
  3. Выберите приложение, использующее API Play Integrity.
  4. В разделе «Выпуск» левого меню перейдите в раздел «Целостность приложения» .
  5. Рядом с Play Integrity API нажмите Настройки .
  6. В разделе «Классические запросы» на странице рядом с пунктом «Шифрование ответа » нажмите «Изменить» .
  7. В появившемся окне нажмите Разрешить Google управлять шифрованием моего ответа (рекомендуется) .
  8. Нажмите Сохранить изменения .