2016-03-26 11 views
0

Перед Swift 2.2 UUID значение было то же самое каждый раз, когда я открыл приложение, теперь изменяется при каждом открытииРазличные UUID в быстром 2.2

Я использую этот код:

UIDevice.currentDevice().identifierForVendor!.UUIDString 

Как я могу сделать сейчас для идентификации пользователя?

+0

"Открытие"? Вы перекомпилировали между «открытием»? – Larme

+1

Зачем вам нужно идентифицировать пользователя? По конкретным причинам неприкосновенности частной жизни невозможно однозначно идентифицировать устройство для пользователя. – Abizern

ответ

1

Это на самом деле кажется ошибкой ИМО. Каждый раз, когда я запускаю свое приложение в симуляторе, он генерирует новый идентификатор поставщика.Вероятно, вы можете обойти его, сохранив идентификатор в NSUserDefaults при первой загрузке, затем извлекая/сравнивая значение из NSUserDefaults вместо того, чтобы получать его из идентификатораForVendor. Это позволит сохранить статический идентификатор поставщика по умолчанию, но теоретически идентификатор продавца все равно будет меняться при каждой загрузке.

С уважением,

Krivvenz.

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

Update 2: - Я вошел это как ошибка с Apple - 26195931.

+0

Очевидно, что вы правы, взломать другое приложение на устройстве, чтобы заблокировать идентификатор продавца, тоже не работает для меня. Надеюсь, что это будет исправлено, до тех пор это обходное решение^ – Bruno

+1

Apple закрыла отчет об ошибке, заявляя, что обновляется до последних бета-версий программного обеспечения. (X Code 8 и Swift 3). Я установил их с веб-сайта разработчика, и теперь проблема решена! – Krivvenz

4

Каждый раз, когда вы удаляете приложение, UUID может измениться. Если вы просто закрываете и открываете приложение, оно должно быть одинаковым. Но если вы удалите приложение (или установите его снова через xcode), оно может измениться.

+0

Чтобы быть ясным, если приложение удалено и переустановлено, идентификатор _not warranty_ будет таким же. – Abizern

+0

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

0

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

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

link для получения дополнительной информации.

4

Есть несколько ответов, которые объясняют , почему UUID сбрасывается. Есть один, который предлагает потенциал, но я бы счел его далеко не идеальным. Но я хочу выделить что-то важное о том, как работает UUID, которая служит отличным обходным решением, которое имеет абсолютно нулевое воздействие на производство или отладочную версию вашей базы кода или скомпилированного двоичного кода.

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

Все, что вам нужно сделать, чтобы предотвратить это значение от изменения при разработке App-A является просто установить App-B от того же поставщика (самостоятельно) и держать его установлена ​​в течение срока службы развития App-A. Это буквально так же просто, как запуск нового нового проекта iOS и установка чистого листа на тестовое устройство (с использованием той же учетной записи разработчика &), а затем никогда не удалять ее снова во время разработки.

App-B поддерживает постоянный UUID для поставщика (независимо от того, сколько раз вы удаляете и переустанавливаете App-A, он всегда будет поддерживать тот же UUID.

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

  • Нет связанных вопросов^_^