Необычный случай, когда VENDOR IDENTIFIER получает одинаковый идентификатор на разных устройствах для одного и того же приложения, загруженного из App Store

Недавно я занялся разработкой iOS и получил задание изучить приложение, которое уже есть в App Store. Но я обнаружил кое-что необычное... Два разных пользователя при входе через два разных устройства через мое приложение, загруженное из App Store, возвращают один и тот же идентификатор поставщика..... это ожидаемый? Потому что согласно ДОКУМЕНТАМ APPLE ID ПОСТАВЩИКА ДОЛЖЕН БЫТЬ РАЗНЫМ ДЛЯ РАЗНЫХ УСТРОЙСТВ НЕЗАВИСИМО ОТ ПРОДАВЦА, если приложение загружается из App Store. Пожалуйста, уточните здесь.

Код, который я использую:

NSString *UString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"Vendor ID %@", UString);

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

skaak 18.12.2020 11:08

Проблема возникла для iOS 13 и iOS 12.4 ... мы оба загрузили приложение из AppStore и вошли в систему, используя другого пользователя на другом устройстве с другой ОС, как указано выше. Идентификатор пакета: com.toi.toinews.ios ... но имеет ли значение идентификатор пакета, если приложение загружается из AppStore? Мы поддерживаем с iOS 7 и далее

user16780334 18.12.2020 11:12

Кажется необычным. Документы, кажется, предполагают, что на старой iOS у вас могут возникнуть проблемы, поскольку будет использоваться только com.toi.toinews, но да, это если вы устанавливаете сами, а не через магазин приложений. Связаны ли эти приложения, например. цели в одном проекте?

skaak 18.12.2020 11:17

Это одно и то же приложение и одна цель, но мы можем протестировать его в сертификате Dev? поскольку согласно документам он будет возвращать один и тот же идентификатор поставщика для разных устройств, поскольку он рассчитывается с использованием идентификатора пакета, если мы устанавливаем с использованием xcode на разных устройствах.

user16780334 18.12.2020 11:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
589
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После нескольких исследований и практических результатов я обнаружил несколько характеристик VendorID:

  1. VENDOR ID будет уникальным для каждого устройства. То есть, если одно и то же приложение будет загружено на два устройства из App Store, оно обязательно вернет другой VENDOR ID. В данном случае VENDOR ID рассчитывается на основе данных AppStore.

  2. VENDOR ID будет одинаковым для каждого приложения на одном устройстве от одного и того же поставщика. То есть, если у меня есть 5 приложений от ПОСТАВЩИКА с именем A на моем устройстве. ВСЕ ЭТИ 5 ПРИЛОЖЕНИЙ БУДУТ ИМЕТЬ ОДИНАКОВЫЙ ИДЕНТИФИКАТОР ПОСТАВЩИКА. Если мы удалим одно приложение и переустановим его снова, ИДЕНТИФИКАТОР ПОСТАВЩИКА не изменится. Чтобы изменить идентификатор ПОСТАВЩИКА, мы должны удалить все 5 приложений.

  3. ИДЕНТИФИКАТОР ПОСТАВЩИКА в новой iOS также изменится, если мы устанавливаем сборку с использованием XCODE или сертификата разработки на другом устройстве. То есть каждое устройство будет иметь другой идентификатор ПОСТАВЩИКА для одного и того же приложения. В этом случае идентификатор поставщика рассчитывается на основе идентификатора BUNDLE ID. Для более старых версий iOS аналогичный BUNDLE ID для 2 приложений может давать одинаковый VENDOR ID .

  4. VENDOR ID всегда представляет собой 32-битную строку.

  5. VENDOR ID не является идентификатором устройства, а является UUID, поэтому мы не можем идентифицировать подробности об устройстве.

ОБНОВЛЕНИЕ

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

Если вы обновляете приложение, установленное в iTunes, а затем обновляете его с помощью Xcode или ipa на основе специальной подготовки или любой другой подготовки, вы получите другое значение. Вы должны сделать его последовательным, Adhoc для adhoc, dev для dev, магазин приложений для магазина приложений.

Установка и переустановка приложения, когда у поставщика есть только одно приложение

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

Другие вопросы по теме