Есть ли способ проверить, было ли переустановлено приложение?

#android #unity3d #installation #google-play

#Android #unity-game-engine #установка #google-Play

Вопрос:

У меня проблема в том, что 5% моих пользователей регистрируются на сервере несколько раз. Это может произойти только при чистой новой установке, потому что я выполняю простую регистрацию в начале: (псевдокод):

 if(!SharedPrefs.contains(accessToken))
{
    registerToServer(response -> {
        SharedPrefs.save(response.accessToken);
        SharedPrefs.save(); // commit, whatever
    }
}
  

Затем я сохраняю UUID его устройства на сервере.

Как вы можете видеть, пользователь не может быть зарегистрирован дважды на одном устройстве. Единственный способ, которым он может, это переустановить приложение, потому что SharedPrefs будут удалены.

Но…

Есть люди, которые регистрируются дважды, 3 раза или даже больше. Я могу видеть это, фильтруя по идентификатору устройства в моей базе данных, и у меня есть несколько записей пользователей с одним и тем же идентификатором устройства.

Чтобы решить эту проблему, мне нужно убедиться, что это не какой-то бот (например, устройства предварительного запуска Google Play).

Вопрос

Есть ли какой-либо способ получить какой-либо уникальный идентификатор установки, который будет идентичен только тому же событию установки Google Play?

Вы, вероятно, скажете, что я мог бы проверить это с помощью самих SharedPrefs, сохранить какой-нибудь bool «firstInstall», и он был бы удален при новой установке. Но я не могу, потому что у меня есть предположения, что SharedPrefs каким-то образом стираются при запуске приложения на этих устройствах.

Это происходит в основном на некоторых SAMSUNG J5, «vivo vivo», Huawei.

Комментарии:

1. Просто создайте DeviceID в качестве первичного ключа в базе данных.

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

3. @SushilKumar DeviceID в качестве первичного ключа не является решением. Это просто скроет проблему.

4. @Ivan Я знаю, что могу. Но какова вероятность того, что 5% пользователей делают это? И почему?!

5. почему вы не используете вход по электронной почте (Google login) или по номеру телефона (account kit facebook)?

Ответ №1:

Ваше предположение, что SharedPrefs очищается только при удалении, неверно. Для любого приложения в любое время пользователь может выполнить «очистить данные приложений». И существует множество (не очень хороших) Инструменты для очистки телефона, которые предлагают сделать это за пользователя.

Официальные рекомендации Android по уникальным идентификаторам находятся здесь.

Рекомендация зависит от того, для какой цели предназначен идентификатор. Похоже, вы используете его для профилирования пользователей, поэтому может подойти рекламный идентификатор.