✔API Google Play Integrity позволяет блокировать приложения, установленные из сторонних источников - «Новости»
Издание Android Authority обратило внимание, что разработчики приложений для Android, которые хотят помешать загрузке своих приложений из сторонних источников, могут сделать это при помощи Play Integrity API. В итоге пользователю будет предложено загрузить приложение из Google Play Store, и обойти эту «рекомендацию» не получится.
Напомним, что изначально Play Integrity (ранее SafetyNet Attestation) представлял собой API для Android, позволяющий приложениям выяснить, было ли устройство рутировано. Root-доступ позволяет получить полный контроль над устройством, и многим разработчикам приложений такое не нравится. Поэтому после получения соответствующего сигнала от API, некоторые типы приложений могут просто отказаться запускаться.
Как правило, в таких случаях отказываются работать банковские приложения, Google Wallet, некоторые игры, Snapchat, а также ряд мультимедийных приложений (например, Netflix). Ведь считается, что root-доступ может использоваться для читерства в играх или фишинга банковских данных.
Как заметили теперь в Android Authority, Google Play Integrity API также помогает разработчикам «проверить, что взаимодействие и запросы к серверу исходят от бинарников [их] подлинного приложения, запущенного на подлинном Android-устройстве». Так, API проверяет, не было ли приложение изменено, не работает ли оно в «недоверенной» среде, включена ли на устройстве функция Google Play Protect и так далее.
Как в случае с SafetyNet Attestation, разработчики могут обращаться к Play Integrity API в любой момент, в итоге получая так называемый «вердикт» о целостности, на основании которого решают, как поступить дальше. Так, выше уже упоминалось, что некоторые приложения вызывают Play Integrity API при запуске и полностью блокируют доступ в зависимости от полученного вердикта. В то же время другие приложения могут обращаться к API только тогда, когда пользователь собирается выполнить некое специфическое действие, и предупредят о том, что продолжать не следует.
Еще в мае текущего года, на конференции Google I/O компания Google показала новые возможности API Play Integrity, которые позволяют приложениям отображать определенные диалоги после получения «проблемного» вердикта целостности.
Например, когда appLicensingVerdict возвращает значение UNLICENSED в вердикте целостности, это означает, что текущий аккаунт пользователя не имеет лицензии, то есть человек не устанавливал и не покупал приложение в Google Play Store.
В ответ на это разработчик может использовать Play Integrity API для отображения диалогового окна GET_LICENSED, чтобы предложить пользователю установить приложение из магазина Google Play. Если пользователь согласится, его аккаунт станет лицензированным (то есть в следующий раз appLicensingVerdict уже вернет значение LICENSED), приложение добавится в библиотеку Play Store и будет получать обновления через официальный магазин Google.
Как видно в примере выше, диалоговое окно предлагает загрузить приложение из Google Play Store, чтобы продолжать его использование. Существует возможность закрыть это окно, однако нет способа обойти его полностью. Так, если просто закрыть окно, приложение получит соответствующий ответ, который будет направлен разработчику, и тот сможет решить, что делать дальше, и стоит ли продолжать блокировать пользователю доступ.
При нажатии на кнопку «Get app», откроется целевая страница приложения в Google Play Store, где вместо обычной кнопки «Установить» появится кнопка «Установить из Play». При нажатии на нее отобразится диалоговое окно с вопросом, точно ли пользователь хочет «установить это приложение из Play». В случае согласия «неизвестная» версия приложения будет удалена с устройства вместе со всеми связанными с ней данными.
Издание отмечает, что у разработчиков и раньше были способы определить, загружены ли их приложения из сторонних источников, но теперь осуществлять такие проверки стало куда проще.
В настоящее время доподлинно неизвестно, используют ли какие-то приложения эту функцию. Вероятно, она уже применяется в некоторых играх. В частности, судя по сообщениям пользователей, эту функциональность уже взяли на вооружение приложения Tesco и BeyBlade X, а также популярная игра Diablo Immortal. Скорее всего, со временем таких приложений станет гораздо больше.
Фото: Android Authority