Недавно я занялся разработкой iOS и получил задание изучить приложение, которое уже есть в App Store. Но я обнаружил кое-что необычное... Два разных пользователя при входе через два разных устройства через мое приложение, загруженное из App Store, возвращают один и тот же идентификатор поставщика..... это ожидаемый? Потому что согласно ДОКУМЕНТАМ APPLE ID ПОСТАВЩИКА ДОЛЖЕН БЫТЬ РАЗНЫМ ДЛЯ РАЗНЫХ УСТРОЙСТВ НЕЗАВИСИМО ОТ ПРОДАВЦА, если приложение загружается из App Store. Пожалуйста, уточните здесь.
Код, который я использую:
NSString *UString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"Vendor ID %@", UString);
Проблема возникла для iOS 13 и iOS 12.4 ... мы оба загрузили приложение из AppStore и вошли в систему, используя другого пользователя на другом устройстве с другой ОС, как указано выше. Идентификатор пакета: com.toi.toinews.ios ... но имеет ли значение идентификатор пакета, если приложение загружается из AppStore? Мы поддерживаем с iOS 7 и далее
Кажется необычным. Документы, кажется, предполагают, что на старой iOS у вас могут возникнуть проблемы, поскольку будет использоваться только com.toi.toinews
, но да, это если вы устанавливаете сами, а не через магазин приложений. Связаны ли эти приложения, например. цели в одном проекте?
Это одно и то же приложение и одна цель, но мы можем протестировать его в сертификате Dev? поскольку согласно документам он будет возвращать один и тот же идентификатор поставщика для разных устройств, поскольку он рассчитывается с использованием идентификатора пакета, если мы устанавливаем с использованием xcode на разных устройствах.
После нескольких исследований и практических результатов я обнаружил несколько характеристик VendorID:
VENDOR ID будет уникальным для каждого устройства. То есть, если одно и то же приложение будет загружено на два устройства из App Store, оно обязательно вернет другой VENDOR ID. В данном случае VENDOR ID рассчитывается на основе данных AppStore.
VENDOR ID будет одинаковым для каждого приложения на одном устройстве от одного и того же поставщика. То есть, если у меня есть 5 приложений от ПОСТАВЩИКА с именем A на моем устройстве. ВСЕ ЭТИ 5 ПРИЛОЖЕНИЙ БУДУТ ИМЕТЬ ОДИНАКОВЫЙ ИДЕНТИФИКАТОР ПОСТАВЩИКА. Если мы удалим одно приложение и переустановим его снова, ИДЕНТИФИКАТОР ПОСТАВЩИКА не изменится. Чтобы изменить идентификатор ПОСТАВЩИКА, мы должны удалить все 5 приложений.
ИДЕНТИФИКАТОР ПОСТАВЩИКА в новой iOS также изменится, если мы устанавливаем сборку с использованием XCODE или сертификата разработки на другом устройстве. То есть каждое устройство будет иметь другой идентификатор ПОСТАВЩИКА для одного и того же приложения. В этом случае идентификатор поставщика рассчитывается на основе идентификатора BUNDLE ID. Для более старых версий iOS аналогичный BUNDLE ID для 2 приложений может давать одинаковый VENDOR ID .
VENDOR ID всегда представляет собой 32-битную строку.
VENDOR ID не является идентификатором устройства, а является UUID, поэтому мы не можем идентифицировать подробности об устройстве.
ОБНОВЛЕНИЕ
Он не должен меняться при обновлении приложения из магазина приложений, как описано в документации.
Если вы обновляете приложение, установленное в iTunes, а затем обновляете его с помощью Xcode или ipa на основе специальной подготовки или любой другой подготовки, вы получите другое значение. Вы должны сделать его последовательным, Adhoc для adhoc, dev для dev, магазин приложений для магазина приложений.
Установка и переустановка приложения, когда у поставщика есть только одно приложение
Если у пользователя не установлено другое приложение от того же поставщика, этот идентификатор изменится после удаления и повторной установки. В вашем случае, когда нет другого приложения от того же поставщика, это означает, что идентификатор изменится,
Каков идентификатор пакета вашего приложения? И какие версии iOS вы поддерживаете и где (с какими версиями) у вас возникают проблемы? Согласно документам, это может быть проблемой.