2015-06-17 26 views
10

identifierForVendor jest nie powinien zmienić na reinstall aplikacji:identifierForVendor zmian na reinstall

Wartość tej nieruchomości pozostaje taka sama, podczas gdy aplikacja (lub inny app od tego samego dostawcy) jest zainstalowany na urządzenie z systemem iOS. Wartość zmienia się, gdy użytkownik usuwa wszystkie aplikacje tego dostawcy z urządzenia , a następnie ponownie instaluje jedną lub więcej z nich. Wartość ta może również ulec zmianie podczas instalowania wersji testowych przy użyciu Xcode lub podczas instalowania aplikacji na urządzeniu przy użyciu dystrybucji ad-hoc. Dlatego jeśli Twoja aplikacja przechowuje wartość tej właściwości w dowolnym miejscu, powinieneś z wdzięcznością obsługiwać sytuacje, w których zmienia się identyfikator.

https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor

Jednakże, właśnie przetestowane z jednym z naszych żywych aplikacje na App Store. Nawet jeśli wiele innych aplikacji nadal jest zainstalowanych na urządzeniu, po ponownym zainstalowaniu aplikacji A identyfikator UUID zwrócony z identyfikatoraForVendor zmienia się za każdym razem.

To nie było tak.

To przyszło do skutku. Ale w pewnym momencie wydaje się, że UUID zaczął się zmieniać na "prostych reinstalacjach" (jak wspomniano powyżej). Czy to znany błąd? Czy identifierForVendor jest uszkodzony w porównaniu z powyższą dokumentacją? Jakiekolwiek obejścia (inne niż zapisywanie UUID w pęku kluczy, ponieważ ta metoda zrywa się z synchronizacją iCloud)?

+0

Zachowaj identyfikatorForVendor lub niestandardowy identyfikator UUID w KeyChain. Zobacz: [Jak zachować identyfikatoryForVendor w ios po odinstalowaniu aplikacji ios na urządzeniu?] (Http://stackoverflow.com/questions/21878560/how-to-preserve-identifierforvendor-in-ios-after-unter-ios-app- na urządzeniu% 3E) –

+0

Pozwolę sobie zacytować "inny niż zapisywanie UUID w pęku kluczy, ponieważ ta metoda zrywa z synchronizacją iCloud". Ta metoda może działać w niektórych przypadkach. Co oznacza, że ​​nie zadziała w ** wszystkich ** przypadkach. – Jonny

+0

Możesz wprowadzać wpisy dotyczące pęku kluczy w zależności od urządzenia (uwaga: przypomniałem sobie to z filmu WWDC i poszedłem szukać zasobów - nie miałem potrzeby jawnego testowania tego samego). https://www.andyibanez.com/using-ios-keychain/ i https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/index.html#//apple_ref/doc/constant_group/Keychain_Item_Accessibility_Constants –

Odpowiedz

8

To znany błąd. Wygląda na to, że Apple wprowadziło aktualizację do AppStore, która powoduje to nowe zachowanie dla identyfikatoraForVendor około 28 maja. Jeśli wyszukujesz na forum dla programistów aplikacji, inni deweloperzy zgłaszają ten sam problem.

GC podpis od Apple już odpowiedział na problem z następującym odpowiedź. „Proszę złożyć raporty o błędach w tej sprawie w https://developer.apple.com/bug-reporting> Wiemy o tym problemie i badają Nie ma znane obejście w tym czasie.. "

+0

Znalazłem/wątek na nowym forum. Wydaje się, że to znany problem, jak mówisz. – Jonny

0

Za chwilę ponownie prześlijmy przy użyciu uprawnienia do grupy aplikacji, aby udostępnić nam wspólne NSUserDefaults. Wygląda na to, że App Group NSUserDefaults (w przeciwieństwie do uprawnień do przechowywania klucz-wartość klucza dostępu do grupy kluczy i iCloud) są udostępniane na urządzeniu, ale nie na koncie iCloud. Jeśli wspólny klucz "deviceid" NSUserDefault nie istnieje, zapiszemy identyfikator IdentifierForVendor, a następnie użyjemy go dla wszystkich naszych aplikacji po zapisaniu.