Уникальный идентификатор пользователя iOS на разных устройствах

спасибо, что нашли время и интерес к чтению этого и, надеюсь, помогли мне.

Мне нужен уникальный идентификатор пользователя для IOS, и то, что я имею в виду под уникальным идентификатором пользователя, - это уникальная строка, предоставляемая Apple, которая уникальна для пользователя, а не устройства, что означает, что она останется неизменной на всех устройствах. Я думал об Apple ID или что-то в этом роде, но это невозможно, потому что Apple не предоставляет его (по крайней мере, насколько мне известно), но я хочу что-то подобное.

Это не может быть UDID, потому что (помимо того, что он устарел), он не сохраняется на всех устройствах. Я хочу это для аутентификации пользователя без необходимости входа в систему или регистрации. Это возможно, потому что некоторые приложения это делают. Я не входил в систему или что-то еще с другим устройством, но он аутентифицировал меня. Я думал, что это связано с Apple ID, но это невозможно.

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

Я очень ценю людей, которые читают это и пытаются помочь. Спасибо

PD: Я использую Appcelerator от Titanium, а не SDK для iOS от Apple или что-то подобное. Но это не так важно, я просто хочу, чтобы процесс мог делать это с помощью Titanium's Appcelerator.

PS: ПРИМЕЧАНИЕ:

Спасибо, что ответили так быстро !. Я читал это много раз и просто не понимаю. Не могли бы вы помочь мне понять это немного лучше?

Насколько я понимаю, это так.

1. -Создайте UUID (меняется при каждой установке) 2.-Сохраните его в связке ключей (насколько мне известно, значения, сохраненные в связке ключей, являются локальными для устройства) со службой по умолчанию (я думаю, что поставлю его с помощью идентификатор приложения-com.bla.bla-), а также учетную запись по умолчанию, я думаю, что оставлю ее как «пользователи».

Все это будет локальным, поэтому каждая установка будет делать это с другим UUID для каждой установки (не обязательно для каждого пользователя) 3.-Сохраните UUID в NSUserDefaults. 4.-Сохраните UUID в публичном хранилище данных облака. (UUID в хранилище данных облака, связке ключей и NSUserDefaults должны быть одинаковыми)

Итак, если выполняется 5 установок, публичное хранилище данных в облаке должно быть таким

An Array of 5 values:
[
XXXX-EEEEE-FFFFF,
SFSDFFWE-WERW-SDFS,
XXXX-XXXXX-XXXXX,
ZZZZZ-ZZZZ-ZZZZX,
XZXZZX-ZXZXZXS-ADADS
]

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

Если UUID не задан, выполните последние 4 шага.

Итак, я запутался на 5-м шаге, большинство людей понимают это решение без каких-либо дополнительных объяснений, поэтому я должен не знать, как что-то работает, может быть, облачные сервисы? Я думаю, проблема в том, что, возможно, я не понимаю, как работает iCloud и как в нем хранятся значения. Я просто не понимаю, как 5-е (случайное число, это может быть 2-е или 2000-е) устройство X, на котором запущено приложение, будет знать, что UUID XXX ... это UUID пользователя X, а не UUID пользователя Z.

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


person Sismetic    schedule 02.07.2012    source источник


Ответы (2)


Ответ, на который вы сослались, - это правильный способ идентифицировать ваших пользователей. Решение состоит в том, чтобы сохранить значение этой идентификации, называемое UUID (уникальный идентификатор пользователя), в отличие от UDID (уникальный идентификатор устройства).

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

person Daniel    schedule 02.07.2012

Как сказал Дэниел, UUID - это правильный способ идентифицировать ваших пользователей. Я просто хочу добавить к этому; Вы сказали, что

Я не понимаю, насколько это будет уникально для каждого нового пользователя

Что ж, согласно этой статье в Википедии:

Случайно сгенерированные UUID имеют 122 случайных бита ... только после генерации 1 миллиарда UUID каждую секунду в течение следующих 100 лет вероятность создания только одного дубликата составит около 50%. Вероятность одного дубликата составит около 50%, если каждый человек на Земле владеет 600 миллионами UUID.

Таким образом, вы можете быть уверены, что UUID будет уникальным для каждого пользователя.

Кроме того, MAC-адрес основан на MAC-адресе вашей сетевой карты, метке времени и другой другой информации. Это добавляет уникальности UUID, согласно этому вопрос о суперпользователе:

[MAC-адреса] достаточно уникальны.

  • Первые 3 октета определяют производителя.
  • Последние 3 октета обычно генерируются во время записи PROM. Как это сделать, зависит от производителя.

Это, очевидно, дает 16 777 215 возможных уникальных MAC-адресов для каждого производителя. Это довольно много, поэтому производителю не следует использовать его повторно.

Таким образом, UUID добавляет дополнительную степень уникальности MAC-адресу.

Подводя итог, для ваших намерений и целей UUID был бы идеальным.

Надеюсь это поможет!

person pasawaya    schedule 02.07.2012
comment
@Sismetic - Нет проблем. Все мы так начинали. - person pasawaya; 03.07.2012
comment
Спасибо за понимание :) Я люблю SO: P. Не могли бы вы помочь мне лучше понять процесс? - person Sismetic; 03.07.2012
comment
@Sismetic - В вашей заметке, где вы говорите 5 installations are run на шаге 4, вы имеете в виду на разных устройствах? Кроме того, когда вы говорите Cloud, вы имеете в виду iCloud или какой-то сервер, который вы настроили? Спасибо - person pasawaya; 03.07.2012
comment
Извините, что так долго отвечал, пришлось поработать по дому. Да, на разных устройствах, а также у разных пользователей. Это будет игра, поэтому, например, вы, как пользователь Qegal, являетесь первым игроком, вы запускаете ее на своем устройстве A, поэтому первая установка будет для Qegal-A, вторая - Sismetic-A (я с другим устройством) и так далее, а затем вы попытаетесь воспроизвести его на другом устройстве, так что это будет установка Qegal-B. Как ваше устройство B узнает, что вы Кегал, а не я? Под облаком я подразумеваю iCloud - person Sismetic; 03.07.2012
comment
Я использую Appcelerator от Titanium, который реализует облачные сервисы, поэтому для реализации чего-то, что есть в SDK для iOS от Apple, разработчикам Titanium необходимо реализовать его в своем SDK, чтобы я мог его использовать, или мне нужно найти модуль, совместимый с Appcelerator. Они называют iCloud ACS (Appcelerator Cloud Services), который реализует сервис Apple iCloud. - person Sismetic; 03.07.2012
comment
Мне очень жаль, но я все еще не понимаю. Не могли бы вы мне помочь? - person Sismetic; 03.07.2012
comment
позвольте нам продолжить обсуждение в чате - person pasawaya; 03.07.2012