Используйте идентификатор guid для регистрации экземпляра приложения xamarin forms

#xamarin.forms

Вопрос:

Добрый день, друзья-ниндзя кода, я пытаюсь сделать свое приложение Xamarin forms уникальным для устройства в том смысле, что вы не можете войти со своими учетными данными ни на одном устройстве, кроме того, на котором вы изначально установили приложение.

Я пришел к выводу, что для этой цели мне следует использовать идентификатор guid. Я искал в Интернете, но не смог найти большого руководства о том, как именно использовать идентификатор guid для распознавания конкретного устройства.

Возможно, существуют какие-либо ресурсы, связанные с этим, или какие-либо примеры кода, используемого для этого?

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

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

Ответ №1:

В этом вопросе есть несколько уровней, во-первых:

Могу Ли Я Однозначно Идентифицировать Устройство? НЕТ

Вы не сможете получить действительно уникальную идентифицирующую информацию об устройстве, такую как UDID, IMEI. Это обеспечивается платформами (iOS и Android) как способ защиты конфиденциальной информации пользователей.

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

Какие У Меня Есть Варианты?

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

Безопасное Хранилище

Вы можете сгенерировать идентификатор guid и поместить его в безопасное хранилище на связке ключей устройств. Это значение связки ключей может сохраняться, даже если ваше приложение удалено. Вы можете использовать этот подход, чтобы проверить, является ли приложение уникальным для пользователя. В этом подходе есть подводные камни, он не идеален, но это подход, который использую я и многие другие.

Стоит отметить, что поведение на разных устройствах очень противоречиво. Связка ключей iOS может быть скопирована в iCloud (если включено шифрование). Устройства Android могут использовать несколько разные стандарты для разных уровней API и поставщиков.

iOS — идентификатор для вендора

iOS создаст идентификатор guid при установке приложения, вы можете использовать это значение вместо создания собственного. Смотрите документацию здесь.

2 недостатка здесь заключаются в том, что вам нужно будет реализовать это на уровне платформы, и если пользователь удалит все ваши приложения, идентификатор guid будет удален, а при переустановке приложения будет создан новый:

Значение этого свойства остается неизменным, пока приложение (или другое приложение от того же поставщика) установлено на устройстве iOS. Значение изменяется, когда пользователь удаляет все приложения этого поставщика с устройства и впоследствии переустанавливает одно или несколько из них. Значение также может изменяться при установке тестовых сборок с помощью Xcode или при установке приложения на устройство с помощью специального дистрибутива. Поэтому, если ваше приложение хранит значение этого свойства в любом месте, вы должны корректно обрабатывать ситуации, когда идентификатор изменяется.


Правка 1: Добавьте дополнительные разъяснения: Объясните снятие отпечатков пальцев и выделите некоторые нюансы платформы

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

1. Спасибо вам за четкий исчерпывающий ответ. Это очень помогает!

2. Я немного обновил информацию, так как вспомнил, что эта практика называется снятием отпечатков пальцев.