Możliwe jest wykrycie identyfikatora urządzenia iOS za pomocą Xcode. Potrzebuję każdej pobranej aplikacji mieć unikalny identyfikator. Myślałem, że generują liczby losowe, ale mogą wygenerować tę samą liczbę więcej niż raz! Ktoś ma pomysł?Utwórz niepowtarzalny identyfikator urządzeń z systemem iOS?
Odpowiedz
Znalazłem dość prosty sposób to zrobić, oto jak:
Prasa POLECENIE + N i wybierz Cocoa Touch Class
.
Nazwij swoją klasę NSString+UUID
i naciśnij dalej.
Następnie zastąpić kod w NSString+UUID.h
z:
@interface NSString (UUID)
+ (NSString *)uuid;
@end
I NSString+UUID.m
z:
@implementation NSString (UUID)
+ (NSString *)uuid {
NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
uuidString = (NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
}
return [uuidString autorelease];
}
@end
Teraz, gdy trzeba uzyskać UUID (tj: przechowywać go za pomocą NSUserDefaults kiedy wasz obciążenie aplikacji):
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *userIdentifierKey = @"user-identifier"
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:userIdentifierKey] == nil) {
NSString *theUUID = [NSString uuid];
[defaults setObject:theUUID forKey:userIdentifierKey];
[defaults synchronize];
}
// additional application setup...
return YES;
}
W klasie UIDevice jabłko dostarczyło metodę uniqueIdentifier, ale teraz jest przestarzałe (dla iOS5), w metodzie documentation dowiesz się, jak możesz użyć uniqueIdentifier.
spróbować
- (NSString *)getDeviceID
{
NSString *uuid = [self gettingString:@"uniqueAppId"];
if(uuid==nil || [uuid isEqualToString:@""])
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID)
{
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[self savingString:@"uniqueAppId" data:uuid];
[uuid autorelease];
CFRelease(theUUID);
}
}
return uuid;
// this is depreciated
// UIDevice *device = [UIDevice currentDevice];
// return [device uniqueIdentifier];
}
Spróbuj UIDevice-with-UniqueIdentifier-for-iOS-5, używa adres MAC jako unikalny identyfikator urządzenia.
czy wiesz, że adres MAC pozostaje stały przez cały czas Wi-Fi i połączenia komórkowe, czy zmienia się, gdy użytkownik przełącza się z jednego rodzaju sieci na inny? – Crashalot
iOS6 zapewnia nowy zamiennik [[[UIDev lód currentDevice] identifierForVendor] UUIDString]
Wartość tej właściwości jest taka sama dla aplikacji, które pochodzą z samego dostawcy działającego na tym samym urządzeniu. Inna wartość jest zwracana dla aplikacji na tym samym urządzeniu, które pochodzą od różnych dostawców, oraz dla aplikacji na różnych urządzeniach względem sprzedawcy.
Można utworzyć kategorię UIApplication, UIDevice lub jak preferują tak (przykład ARC)
@interface UIApplication (utilities)
- (NSString*)getUUID;
@end
@implementation UIApplication (utilities)
- (NSString*)getUUID {
NSUserDefaults *standardUserDefault = [NSUserDefaults standardUserDefaults];
static NSString *uuid = nil;
// try to get the NSUserDefault identifier if exist
if (uuid == nil) {
uuid = [standardUserDefault objectForKey:@"UniversalUniqueIdentifier"];
}
// if there is not NSUserDefault identifier generate one and store it
if (uuid == nil) {
uuid = UUID();
[standardUserDefault setObject:uuid forKey:@"UniversalUniqueIdentifier"];
[standardUserDefault synchronize];
}
return uuid;
}
@end
UUID() to funkcja ta
NSString* UUID() {
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return (__bridge NSString *)uuidStringRef;
}
generuje to unikalny identyfikator przechowywany w pliku NSUserDefault, aby można go było ponownie użyć, gdy aplikacja tego wymaga - Ta identyfikacja r będzie unikalny związany z instalacjami aplikacji, a nie z urządzeniem, ale może być użyty na przykład do śledzenia liczby urządzeń subskrybowanych przez usługę APN itp ...
Po tym można używać go w ten sposób:
NSString *uuid = [[UIApplication sharedApplication] getUUID];
użyj: [[UIDevice currentDevice] identifierForVendor]
Aby uzyskać więcej informacji, zajrzyj do tego answer
- 1. Jak uzyskać identyfikator UDID martwego urządzenia z systemem iOS?
- 2. Niepowtarzalny identyfikator urządzenia z Androidem po ostrzeżeniu MarshMallow "nie zaleca się identyfikatorów urządzeń"?
- 3. Ładowanie skryptu JS tylko dla urządzeń z systemem iOS?
- 4. Usługi CBP dla urządzeń z systemem iOS nie są aktualizowane
- 5. Obsługa wielodotykowych urządzeń z systemem Android
- 6. Odpowiednik iOS dla urządzeń z Androidem SharedPreferences
- 7. iOS 7 - brak dostępnych urządzeń ios
- 8. Niepowtarzalny komunikat kolejki Azure
- 9. Jak uzyskać logi konsoli z urządzeń z systemem iOS 8 przy użyciu Windows PC
- 10. Ustawianie domyślnego tytułu zakładek na ekranie głównym urządzeń z systemem iOS?
- 11. Listy rozwijane oparte na CSS nie wyświetlające urządzeń z systemem iOS
- 12. Jak mogę cross-kompilować GCC do produkcji libgfortran dla urządzeń z systemem iOS (ramię, armv7)?
- 13. Jak przesłać archiwum tylko dla 64-bitowych urządzeń z systemem iOS?
- 14. Wbudowany parser drzewa urządzeń z systemem Linux w pythonie?
- 15. MPVolumeView nie działa już na urządzeniach z systemem iOS 7
- 16. Niepowtarzalny błąd podczas @runInSeparateProcess
- 17. Niepowtarzalny ogranicznik OpenERP
- 18. Komunikacja między dwoma urządzeniami z systemem iOS
- 19. Odzyskaj identyfikator urządzenia iOS
- 20. Uzyskaj identyfikator bieżącego urządzenia z systemem Windows Phone 7
- 21. Identyfikator tabletu z systemem Android dla języka Python i Java
- 22. Utwórz istniejący projekt iOS
- 23. Utwórz/uruchom projekt iOS Xcode z Terminalu
- 24. Utwórz UIImage z URL w iOS
- 25. Dzienniki urządzeń dla bluetooth w systemie iOS
- 26. Co oznacza "aplikacja musi być zbudowana na urządzeniach z systemem iOS z wyświetlaczem Retina"
- 27. iOS: Dodawanie klucza prywatnego do urządzeń KeyChain
- 28. Dodaj więcej urządzeń do konta programistycznego iOS
- 29. Xcode 9 - iOS 11 Dziennik urządzeń Prywatny
- 30. Identyfikator pakietu Portal obsługujący iOS
różnych rozwiązań już przewidzianych na SO, spróbuj tego wątek http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –