На этой странице объясняется, как настроить приложение или игру для использования Play Integrity API. Вам необходимо включить ответы API, а затем интегрировать API в ваше приложение и внутренний сервер вашего приложения. Дополнительные параметры конфигурации, функции тестирования и отчеты станут доступны после того, как вы свяжете проект Google Cloud, который вы используете для Play Integrity API, в консоли Google Play.
Включить ответы Play Integrity API
Каждое приложение или SDK, вызывающее Play Integrity API, должно использовать проект Google Cloud для мониторинга использования API. Приложения в Google Play могут связать облачный проект в консоли Google Play, чтобы включить ответы Play Integrity API. Если вы хотите создать новый облачный проект или ваше приложение распространяется исключительно за пределами Google Play, вы можете включить ответы Play Integrity API в своей Google Cloud Console.
Настроить в Google Play Console (рекомендуется)
Включив ответы Play Integrity API в консоли Google Play , вы получите доступ к дополнительным параметрам конфигурации, функциям тестирования и отчетам API. Эта опция доступна только для приложений, распространяемых в Google Play. Перейдите в раздел «Выпуск» > «Целостность приложения» . В разделе Play Integrity API выберите «Связать с облачным проектом» . Выберите облачный проект, который вы хотите связать со своим приложением, и это активирует ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в свое приложение.
Настройка в Google Cloud Console
В Google Cloud Console создайте новый облачный проект или выберите существующий облачный проект, который вы хотите использовать с Play Integrity API. Перейдите к API и сервисам . Выберите «Включить API и службы» . Найдите Play Integrity API и включите его. Теперь вы можете интегрировать Play Integrity API в свое приложение.
Инструкции по настройке для поставщиков SDK
Поставщики SDK должны использовать собственный проект Google Cloud для вызова Play Integrity API, чтобы использование API относилось к SDK, а не к отдельным приложениям, использующим SDK. Это означает, что приложениям, использующим ваш SDK, не нужно индивидуально настраивать Play Integrity API. Ваши запросы к Play Integrity API автоматически учитываются при использовании API вашего SDK, а не приложения.
У разработчиков SDK есть два варианта настройки Play Integrity API: консоль Google Play SDK или консоль Google Cloud.
Используйте консоль Google Play SDK (рекомендуется)
Включив ответы Play Integrity API в консоли Google Play SDK, вы получаете доступ к дополнительным параметрам конфигурации. Перейдите к целостности SDK и нажмите «Настройки» . В разделе «Конфигурация проекта» выберите «Связать облачный проект» . Выберите облачный проект, который вы хотите связать со своим SDK, и это активирует ответы Play Integrity API. Теперь вы можете интегрировать Play Integrity API в свой SDK. Обратите внимание, что доступ к консоли Google Play SDK зависит от критериев приемлемости.
Используйте облачную консоль Google
Вы можете включить ответы Play Integrity API в своей Google Cloud Console. В Google Cloud Console создайте новый облачный проект или выберите существующий облачный проект, который вы хотите использовать с Play Integrity API. Перейдите к API и сервисам . Выберите «Включить API и службы» . Найдите Play Integrity API и включите его. Теперь вы можете интегрировать Play Integrity API в свой SDK.
Увеличьте количество ежедневных запросов Play Integrity API вашего SDK.
Поставщики SDK, которые хотят увеличить максимальное количество ежедневных запросов, должны заполнить форму запроса квоты . В разделе открытых комментариев укажите, что вы делаете запрос SDK, и укажите свои координаты Maven ( groupId:artifactId
) или URL-адрес вашего SDK.
Увеличьте количество ежедневных запросов Play Integrity API.
Ваше приложение будет подвергаться максимум 10 000 запросов на одно приложение в день. Вы можете запросить увеличение этого дневного максимума, если вашему приложению необходимо обслуживать увеличенное количество пользователей, следуя инструкциям ниже.
Увеличьте ежедневное максимальное количество запросов
Чтобы иметь право на увеличение максимального количества ежедневных запросов, ваше приложение должно быть доступно в Google Play в дополнение к любым другим каналам распространения. Даже при увеличении дневного максимума вам следует продолжать ограничивать классические запросы на одного пользователя нечастыми и важными действиями, чтобы сохранить пользовательские данные и заряд батареи.
Чтобы запросить увеличение максимального количества запросов в день, выполните следующие действия:
- Свяжите проект Google Cloud, который вы используете для Play Integrity API, в Play Console.
- Убедитесь, что вы правильно реализуете логику API, включая рекомендуемую стратегию повторных попыток.
- Запросите увеличение квоты, используя эту форму .
Увеличение квоты Play Integrity API может занять до недели, поэтому мы настоятельно рекомендуем отслеживать использование Play Integrity API в консоли Google Play или в Google Cloud Console, где вы также можете настроить оповещения о квотах , чтобы избежать перебоев в вашей работе. услуга.
Увеличение квоты классического запроса будет автоматически применено как к клиентскому вызову для создания токенов целостности, так и к серверному вызову для расшифровки и проверки токенов целостности. Стандартное увеличение квоты запросов применяется к вызову сервера для расшифровки и проверки токенов целостности.
Интегрируйте Play Integrity API в свое приложение.
Чтобы интегрировать Play Integrity API в ваше приложение или SDK, выполните одно из следующих действий в зависимости от вашей среды разработки:
Котлин или Java
Последняя версия библиотеки Android для Play Integrity API доступна в репозитории Google Maven . Добавьте следующую зависимость в файл build.gradle
вашего приложения:
implementation 'com.google.android.play:integrity:1.4.0'
Единство
Установите плагин целостности Google Play для Unity 1.3.0 или выше. Инструкции см. в разделе «Как установить пакеты Google для Unity» .
- Поддерживаются все версии 2019.x, 2020.x и новее.
- Если вы используете Unity 2018.x, поддерживается версия 2018.4 или новее.
- Unity 2017.x и более ранние версии не поддерживаются.
Родной
Установите Play Core Native SDK 1.13.0 или более поздней версии. Инструкции см. в руководстве по настройке среды разработки Play Core Native.
Настройте ответы API (необязательно)
Ответ API включает вердикты по умолчанию, возвращаемые в каждом запросе. Если вы настроили интеграцию Play Integrity API в Play Console, вы можете настроить ответ API.
Ответы по умолчанию
По умолчанию в ответе Play Integrity API возвращаются следующие вердикты целостности:
Поле ответа | Ценить | Описание |
---|---|---|
Целостность устройства | MEETS_DEVICE_INTEGRITY | Приложение работает на устройстве Android с поддержкой сервисов Google Play. Устройство проходит проверку целостности системы и соответствует требованиям совместимости с Android. |
Пусто (пустое значение) | Приложение работает на устройстве, имеющем признаки атаки (например, перехват API) или взлома системы (например, рутирование), или приложение не работает на физическом устройстве (например, эмулятор, который не проходит проверку целостности Google 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. |
Дополнительные ответы
Если вы настроили интеграцию Play Integrity API в Play Console или Play SDK Console, вы можете подписаться на получение информации в ответе API.
Чтобы внести изменения в ответы API, посетите Play Console и выберите «Выпуск» > «Целостность приложения» . В разделе «Ответы» отредактируйте и сохраните изменения.
Дополнительная информация об устройстве
Приложения и SDK могут включать дополнительные метки устройств в вердикте целостности устройства. После того как вы согласитесь на получение дополнительных меток, ответ о целостности будет включать несколько меток для одного и того же устройства, если каждый из критериев метки соблюден. Вы можете подготовить свой внутренний сервер к разному поведению в зависимости от диапазона возможных ответов. Например, устройству, которое возвращает три метки ( MEETS_STRONG_INTEGRITY
, MEETS_DEVICE_INTEGRITY
и MEETS_BASIC_INTEGRITY
), можно доверять больше, чем устройству, которое возвращает только одну метку ( MEETS_BASIC_INTEGRITY
).
Вы также можете подписаться на недавнюю активность устройства. Недавняя активность устройства возвращает уровень от LEVEL_1
(малое количество запросов) до LEVEL_4
(большое количество запросов). Например, устройство, которое возвращает значительно более высокий уровень активности, чем обычно для вашего приложения, может пытаться создать большое количество токенов целостности для распространения на ненадежные устройства.
Поле ответа | Этикетка | Описание | |
---|---|---|---|
Целостность устройства | MEETS_BASIC_INTEGRITY | Приложение работает на устройстве, которое проходит базовую проверку целостности системы. Устройство может не соответствовать требованиям совместимости Android и не быть одобрено для запуска сервисов Google Play. Например, устройство может работать под управлением неизвестной версии Android, иметь разблокированный загрузчик или не быть сертифицировано производителем. | |
MEETS_STRONG_INTEGRITY | Приложение работает на устройстве Android с поддержкой сервисов Google Play и имеет надежную гарантию целостности системы, например аппаратное подтверждение целостности загрузки. Устройство проходит проверку целостности системы и соответствует требованиям совместимости с Android. | ||
Недавняя активность устройства | Стандартные запросы токена целостности API на этом устройстве за последний час для каждого приложения | Запросы токена целостности классического API на этом устройстве за последний час для каждого приложения | |
LEVEL_1 (самый низкий) | 10 или меньше | 5 или меньше | |
LEVEL_2 | Между 11 и 25 | Между 6 и 10 | |
LEVEL_3 | От 26 до 50 | Между 11 и 15 | |
LEVEL_4 (самый высокий) | Более 50 | Более 15 | |
UNEVALUATED | Недавняя активность устройства не оценивалась. Это может произойти потому, что:
|
Дополнительные сведения о среде
Приложения могут подписаться на получение дополнительных оценок об окружающей среде. Риск доступа к приложениям позволяет узнать, запущены ли другие приложения, которые могут захватывать экран, отображать наложения или управлять устройством. Вердикт 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 Store недавно были сброшены. | |
POSSIBLE_RISK | Play Protect отключен. | |
MEDIUM_RISK | Play Protect включен и обнаружил, что на устройстве установлены потенциально опасные приложения. | |
HIGH_RISK | Play Protect включен и обнаружил, что на устройстве установлены опасные приложения. | |
UNEVALUATED | Вердикт Play Protect не был оценен. Было пропущено необходимое требование, например, устройство не заслуживало достаточного доверия. |
Настройте параметры классического запроса (необязательно)
Пропустите этот раздел, если вы планируете делать только стандартные запросы API .
Когда вы отправляете классические запросы, серверы Google Play по умолчанию управляют шифрованием ответов, которое ваше приложение использует при взаимодействии с Play Integrity API. Хотя мы рекомендуем вам использовать этот вариант по умолчанию, вы также можете управлять ключами шифрования ответов и загружать их, следуя инструкциям ниже.
Разрешите Google управлять шифрованием вашего ответа (по умолчанию и рекомендуется)
Чтобы защитить безопасность вашего приложения, рекомендуется разрешить Google генерировать ключи шифрования ваших ответов и управлять ими. Ваш внутренний сервер обратится к серверу Google Play для расшифровки ответов.
Управлять и загружать ключи шифрования моих ответов
Если вы хотите расшифровать вердикт целостности локально в своей защищенной серверной среде, вы можете управлять ключами шифрования ответов и загружать их. Чтобы управлять ключами шифрования ответов и загружать их, вы должны использовать Play Console, а ваше приложение должно быть доступно в Google Play в дополнение к любым другим каналам распространения. Следуйте инструкциям ниже, чтобы переключиться с ключей шифрования ответов, управляемых Google, на ключи шифрования ответов, управляемые самостоятельно.
Не забывайте не расшифровывать и не проверять полученный токен из клиентского приложения и никогда не предоставлять клиентскому приложению ключи дешифрования.
Прежде чем изменить стратегию управления шифрованием ответов в Play Console, убедитесь, что ваш сервер правильно настроен для расшифровки и проверки токенов целостности на серверах Google Play, чтобы избежать сбоев.
Переключение между ключами шифрования ответов, управляемыми Google, и ключами шифрования ответов, управляемыми самостоятельно.
Если в настоящее время Google управляет шифрованием ваших ответов, и вы хотите самостоятельно управлять ключами шифрования ответов и загружать их, выполните следующие действия:
- Войдите в консоль Play .
- Выберите приложение, которое использует Play Integrity API.
- В разделе «Выпуск» левого меню перейдите к «Целостность приложения» .
- Рядом с Play Integrity API нажмите «Настройки» .
- В разделе Классические запросы на странице рядом с пунктом Шифрование ответа нажмите Изменить .
- В появившемся окне нажмите «Управление» и загрузите ключи шифрования моего ответа .
- Следуйте инструкциям, чтобы загрузить открытый ключ.
- После того, как в окне появится сообщение об успешной загрузке, нажмите «Сохранить» , и зашифрованные ключи загрузятся автоматически.
- Измените логику вашего сервера так, чтобы вы могли расшифровывать и проверять токены целостности локально, в своей собственной защищенной серверной среде, используя ключи шифрования ответов.
- (Необязательно) Если вы самостоятельно управляете ключами шифрования ответов, ваше приложение по-прежнему может обращаться к серверу Google Play для расшифровки и проверки ответа.
Если вы самостоятельно управляете ключами шифрования ответов и хотите, чтобы Google управлял шифрованием ответов, выполните следующие действия:
- Измените логику своего сервера, чтобы расшифровка и проверка выполнялись исключительно на серверах Google.
- Войдите в консоль Play .
- Выберите приложение, которое использует Play Integrity API.
- В разделе «Выпуск» левого меню перейдите к «Целостность приложения» .
- Рядом с Play Integrity API нажмите «Настройки» .
- В разделе Классические запросы на странице рядом с пунктом Шифрование ответа нажмите Изменить .
- В появившемся окне нажмите «Разрешить Google управлять шифрованием моего ответа (рекомендуется)» .
- Нажмите Сохранить изменения .