Как приложение для Android определяет, установлен ли оно впервые или нет?

Здравствуйте. 

У меня есть приложение, в котором реализована защита от повторной установки как новой. Например, на айфоне эту защиту можно обойти простым удалением и повторной установкой приложения, но на андроид-системах ситуация гораздо сложнее. 

Я предполагаю, что основа этой защиты связана с DEVICE ID, однако до конца не понимаю, как именно это работает. Когда именно происходит считывание этого идентификатора? Куда приложение его отправляет: в собственную базу данных или в Google? Как приложение взаимодействует с API после этого? 

Не могли бы вы объяснить принцип работы данной защиты?
  • 17 ноября 2024 г. 1:23
Ответы на вопрос 2
Здравствуйте!

Защита приложений от повторной установки, особенно на Android, может быть реализована разными способами. Важно отметить, что Android предоставляет различные идентификаторы устройства и методы для хранения данных, которые можно использовать для таких целей. Рассмотрим несколько основных подходов, которые могут использоваться для определения, установлено ли приложение впервые, или его переустановка:

### 1. Использование SharedPreferences
Самый простой способ — это хранить информацию о первом запуске приложения в `SharedPreferences`. При первом запуске приложения вы можете записать значение (например, `isFirstLaunch = true`), а затем проверять это значение при последующих запусках. Однако этот метод не защищен от удаления приложения и не предотвратит возможность его повторной установки.

### 2. Использование идентификаторов устройства
Android предоставляет несколько идентификаторов, которые могут быть использованы, но важно понимать, что использование некоторых из них может быть ограничено или изменено в зависимости от версии Android и настроек конфиденциальности пользователя.

- **ANDROID_ID**: Это уникальный идентификатор устройства, который может быть использован для отслеживания устройств. Однако он может изменяться при сбросе настроек устройства или переустановке приложения на некоторых устройствах.

- **UUID**: Вы можете генерировать уникальный идентификатор для вашего приложения и хранить его в `SharedPreferences` или в локальной базе данных. Если приложение удалено и установлено повторно, вы можете его утратить.

### 3. Серверное взаимодействие
Другой более надежный подход — использование серверного взаимодействия. Вы можете отправлять идентификатор устройства (например, `ANDROID_ID`) на ваш сервер при первом запуске. Сервер будет хранить информацию о том, когда и сколько раз приложение было установлено на этом устройстве.

1. **Первый запуск**: При первом запуске отправляете устройство ID и другую необходимую информацию на сервер, записываете это в базу данных.
2. **Проверка на сервере**: При последующих запусках приложение будет проверять свой ID на сервере. Если ID уже существует, это означает, что приложение уже устанавливалось на этом устройстве.

### 4. Использование License Verification Library (LVL)
Если ваша цель также включает защиту от нелегального использования приложения, вы можете использовать Google Play's License Verification Library, которая помогает контролировать лицензии исполненных приложений и может добавить дополнительный уровень проверки.

### Итоги
1. **Хранение данных**: Используйте `SharedPreferences` или базу данных для хранения информации о первом запуске.
2. **Идентификатор устройства**: Используйте `ANDROID_ID`, UUID или другой уникальный идентификатор, чтобы отслеживать, было ли приложение удалено и переустановлено.
3. **Серверная проверка**: Храните состояние на сервере для более надежного отслеживания.

Комбинируя эти методы, вы сможете создать хорошую защиту от повторной установки приложения на устройстве. Будьте также внимательны к вопросам приватности пользователя и требованиям законодательства, таким как GDPR.
DeviceId не будет работать на новом устройстве 
Есть несколько вариантов.
Разработчики могли воспользоваться Android App Backup https://developer.android.com/identity/data/backup
Другой вариант - как это делают все приложения Яндекса даже на чистом новом устройстве. Они читают все доступные Google-аккаунты на устройстве и сверяют их с уже зарегистрированными на своих серверах.
.
Похожие вопросы