Uuid устройства iOS когда-либо изменяется с обновлениями программного обеспечения? - PullRequest
1 голос
/ 31 декабря 2011

Изменяется ли когда-либо Uuid устройства iOS, с обновлениями программного обеспечения или чем-то связанным?

Ответы [ 4 ]

1 голос
/ 31 декабря 2011

Нет, не меняется. Но обратите внимание, что теперь устарело (возможно, из-за проблем с конфиденциальностью).

0 голосов
/ 31 декабря 2011

UDID никогда не меняется на устройствах iOS, работающих под управлением стандартной операционной системы Apple.

На устройствах под управлением рутированной / модифицированной ОС значение, возвращаемое любым API-интерфейсом, может быть любым, что хочет умный модификатор.

0 голосов
/ 31 декабря 2011

Нет, это не так. Он всегда останется прежним.

0 голосов
/ 31 декабря 2011

Вы можете создать свой собственный UUID, который будет сохраняться до тех пор, пока ваше приложение находится на устройстве.

+ (NSString *)localUuid {
   NSString *ident = [[NSUserDefaults standardUserDefaults] objectForKey:@"unique identifier stored for app"];
   if (!ident) {
      CFUUIDRef uuidRef = CFUUIDCreate(NULL);
      CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
      CFRelease(uuidRef);
      ident = [NSString stringWithString:(NSString *)uuidStringRef];
      CFRelease(uuidStringRef);
      [[NSUserDefaults standardUserDefaults] setObject:ident forKey:@"unique identifier stored for app"];
      [[NSUserDefaults standardUserDefaults] synchronize];
   }
   return ident;
}

, но это не дает вам уникальный идентификатор, который вы можете использовать в разных приложениях дляочевидные причины.Другая альтернатива использует MAC-адрес

#import <sys/types.h>
#import <sys/socket.h>
#import <sys/sysctl.h>
#import <sys/time.h>
#import <netinet/in.h>
#import <net/if_dl.h>
#import <netdb.h>
#import <errno.h>
#import <arpa/inet.h>
#import <unistd.hv
#import <ifaddrs.h>

#if !defined(IFT_ETHER)
   #define IFT_ETHER 0x6
#endif

@implementation MACIdentify

- (NSString*)MACAddress {
    NSMutableString* result = [NSMutableString string];

    BOOL success;
    struct ifaddrs* addrs;
    const struct ifaddrs* cursor;
    const struct sockaddr_dl* dlAddr;
    const uint8_t * base;
    int i;

    success = (getifaddrs(&addrs) == 0);
    if(success)
    {
        cursor = addrs;
        while(cursor != NULL)
        {
            if((cursor->ifa_addr->sa_family == AF_LINK) && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER))
            {
                dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;

                base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen];

                for(i=0; isdl_alen; i++)
                {
                    if(i != 0)
                    {
                        [result appendString:@":"];
                    }
                    [result appendFormat:@"%02x", base[i]];
                }
            }
            cursor = cursor->ifa_next;
        }
        freeifaddrs(addrs);
    }

    return result;
}

@end
...