1

Я создаю небольшое приложение для Android, которое должно создать уникальный userIds.FirebaseInstanceId - уникальное приложение «Firebase» или приложение для Android?

Я думал о том, чтобы использовать FirebaseInstanceId.getId() для этого, потому что documentation says

Возвращает постоянный идентификатор, который однозначно идентифицирует экземпляр приложения

Но что же app означает в этом контексте?

Действительно ли app означает «настоящее» приложение для Android или iOS, которое использует FirebaseInstanceId? Или это означает «Firebase App» или лучше Firebase Project?

Могу ли я считать, что генерируемый id является уникальным в моем Firebase проекта и могут быть сохранены в качестве FirebaseDatabaseuserId или я должен создать по-другому уникальный userId?

ответ

3

Вы можете сделать вывод, что «приложение» в данном случае означает определенную установку приложения на устройстве. Посмотрите на javadocs for FirebaseInstanceId и обратите внимание на правила, когда идентификатор экземпляра может измениться. Устанавливать/удалять и очищать данные приложения - это результат поведения пользователя против приложения на своем устройстве. Обратите внимание, что это значение может измениться и, следовательно, вероятно, не подходит для использования вне Firebase.

Это значение используется Firebase для идентификации приложения, которое может получать сообщение облака. Он не представляет конкретного пользователя. Пользователь может иметь тот же APK, установленный на нескольких устройствах, используя одну учетную запись для входа в каждый из них. Если вы хотите отправить этому пользователю сообщение облака, к какому экземпляру приложения он должен перейти, на каком устройстве? Вероятно, вы захотите отправить их всем. Именно здесь вступает в игру экземпляр id. Чтобы сохранить постоянное поведение вашего приложения, независимо от того, сколько раз он был установлен для пользователя, вам нужен идентификатор экземпляра каждой уникальной установки, чтобы нацелить сообщение на все из них.

Чтобы идентифицировать конкретного пользователя, вы должны использовать Firebase Authentication и предполагать, что они будут регистрироваться в одной учетной записи каждый раз, поэтому будет один UID, который вы можете сохранить, чтобы ссылаться на этого человека. Обычно ассоциировать множественные идентификаторы экземпляров с одним пользователем для целей целевого обмена сообщениями с этим пользователем.

1

Я использую 2 разных метода на 2-х различных приложений,

Первый: использование устройства IMEI (вы должны попросить разрешения READ_PHONE_STATE сделать это),

Тогда ваша структура Firebase будет что-то вроде -

/uniqueImei1/Database1..(games/notes etc..) 
/uniqueImei2/Database2..(games/notes etc..) 

ИЛИ, путь ЛУЧШЕ, чтобы сделать это, чтобы использовать пихты ebase Auth UID, Каждый пользователь, как только он подключиться к вашему приложению, используя логин Имя & Pass/Google/войти в Facebook и т.д .. получает уникальный идентификатор, называемый UID, чтобы достичь этого UID вы будете использовать

String UID = FirebaseAuth.getInstance().getCurrentUser().getUid(); 

тогда, ваша firebase структура -

/UID1/Database1..(games/notes etc..) 
/UID2/Database2..(games/notes etc..) 

For more information about option 2, Click here.

Вы действительно должны использовать вариант 2, Успехов :)

+0

Спасибо. Наверное, это лучшее (лучшее?) Решение. Но это не отвечает на мой вопрос :) – StefMa

Смежные вопросы