2011-12-31 1 views

답변

1

아니요, 변경되지 않습니다. 그러나 이제는 deprecated입니다 (개인 정보 보호 문제로 인한 것일 수 있음).

0

앱이 기기에있는 동안 지속되는 '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; 
} 

그러나 이것은 명백한 이유로 응용 프로그램에서 사용할 수있는 고유 한 ID를 제공하지 않습니다. 다른 alternative is using the MAC address

#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 
+2

그건 그가 묻는 것이 아닙니다. – Abizern

+0

플러스, @HaggleLad가 [다른 질문에 대한 내 대답] (http://stackoverflow.com/a/6993440/400056)에 대한 의견으로 개인 정보 보호를 이유로 MAC을있는 그대로 사용하는 것은 좋지 않습니다. . 예를 들어, MD5 또는 SHA1로 해쉬함으로써 난독 화되어야합니다. – DarkDust

0

아니요. 그것은 항상 동일하게 유지 될 것입니다.

-1

Apple의 OS가 실행되는 iOS 장치에서는 UDID가 변경되지 않습니다.

루트/수정 된 OS를 실행하는 기기에서 임의의 API가 반환하는 값은 영리한 수정자가 원하는 것일 수 있습니다.