Настройка

На этой странице объясняется, как настроить ваше приложение, игру или 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.

  1. Перейдите в раздел API и сервисы .
  2. Выберите «Включить API и сервисы» .
  3. Найдите Play Integrity API .
  4. Нажмите «Включить» .

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

Ссылка на Google Play (рекомендуется)

Подключите ваше приложение или SDK к Google Play, используя эти инструкции.

Приложения и игры в Google Play

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

  1. Откройте консоль Google Play и выберите своё приложение.
  2. Перейдите в раздел «Тестирование и выпуск» > «Целостность приложения» .
  3. В разделе Play Integrity API нажмите «Привязать облачный проект» .
  4. Выберите проект Google Cloud, который вы планируете использовать с Play Integrity API; если Play Integrity API еще не включен для проекта, он будет включен автоматически при связывании.

Для поставщиков SDK в консоли Play SDK

Разработчики SDK, использующие консоль Google Play SDK, могут связать свой проект Google Cloud, чтобы приписывать использование API именно SDK, а не отдельным приложениям, его использующим, включать дополнительные функции и запрашивать увеличение ежедневной квоты на использование API. Обратите внимание, что доступ к консоли Google Play SDK предоставляется при соблюдении определенных критериев соответствия .

  1. Откройте консоль Google Play SDK и выберите свой SDK.
  2. Перейдите в раздел «Целостность SDK» .
  3. В разделе Play Integrity API нажмите «Привязать облачный проект» .
  4. Выберите проект 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 . Запросы на квоты от несвязанных проектов будут отклонены.

Чтобы запросить повышение:

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

Для поставщиков SDK в консоли Play SDK

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

Чтобы запросить повышение:

  1. Подключите свой проект Google Cloud в консоли Google Play SDK .
  2. Заполните форму заявки в службу поддержки разработчиков .

В комментариях укажите данные о вашем 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.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 пункт Assets > Import package > Custom Package и импортировав все элементы.

Unreal Engine

В следующих разделах описывается, как интегрировать и настроить API Google Play Integrity для проектов 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");
    
        // ...
      }
    }
    

Родной

Следуйте инструкциям по настройке . Для получения более подробной информации см. справочную документацию по собственному 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 Информация о лицензировании не была проверена, поскольку было упущено одно из требований. Это может произойти по нескольким причинам, в том числе по следующим:
  • Данное устройство недостаточно надежно.
  • Пользователь не авторизован в Google Play.
  • Версия приложения, установленного на вашем устройстве, неизвестна Google Play.
целостность приложения 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 с недавним обновлением безопасности.
  • На Android 13 и выше для достижения вердикта MEETS_STRONG_INTEGRITY требуется наличие MEETS_DEVICE_INTEGRITY и обновлений безопасности за последний год для всех разделов устройства, включая патч для раздела ОС Android и патч для раздела поставщика.
  • В Android 12 и более ранних версиях для подтверждения целостности загрузки требуется только аппаратное обеспечение, и наличие на устройстве недавнего обновления MEETS_STRONG_INTEGRITY не является обязательным. Поэтому при использовании MEETS_STRONG_INTEGRITY рекомендуется также учитывать версию Android SDK в поле deviceAttributes .
Атрибуты устройства 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 Недавняя активность устройства не была оценена. Это могло произойти по следующим причинам:
  • Данное устройство недостаточно надежно.
  • Версия приложения, установленного на вашем устройстве, неизвестна Google Play.
  • В устройстве возникли технические неполадки.
отзыв устройства 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 пустое. Это может произойти по нескольким причинам, в том числе по следующим:
  • Данное устройство недостаточно надежно.
  • Данное устройство не является телефоном, планшетом или складным устройством.
  • На устройстве установлена ​​не версия Android 6 (уровень API 23) или выше.
  • Версия приложения, установленного на вашем устройстве, неизвестна Google Play.
  • Версия магазина Google Play на устройстве устарела.
  • Только игры : У учетной записи пользователя нет лицензии 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 использует шифрование ответов, то есть ваш бэкэнд обращается к серверу Google для расшифровки результатов. В качестве альтернативы вы можете самостоятельно управлять ключами для локальной расшифровки в защищенной серверной среде.

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

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

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

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

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

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

  1. Откройте Play Console и выберите своё приложение.
  2. Перейдите в раздел «Тестирование и выпуск» > «Целостность приложения» .
  3. Рядом с пунктом Play Integrity API нажмите «Настройки» .
  4. В разделе «Классические запросы» , рядом с пунктом «Шифрование ответа» , нажмите «Редактировать» .

Чтобы переключиться на самостоятельно управляемые ключи:

  1. Выберите «Управление» и загрузите мои ключи шифрования ответа , затем загрузите свой открытый ключ.
  2. Нажмите «Сохранить» , чтобы автоматически загрузить зашифрованные ключи.
  3. Обновите свой защищенный сервер, чтобы расшифровка происходила локально с помощью этих ключей.

Чтобы переключиться на ключи, управляемые Google:

  1. Выберите « Разрешить Google управлять шифрованием моего ответа (рекомендуется)» .
  2. Нажмите «Сохранить изменения» .