UDID 대체 방법 -> MAC 어드레스 얻기
올해 3월이었죠. 애플이 개인정보 유출을 막고자 UDID를 쓰는 앱에 대해 단계적으로 심사하겠다고 했습니다.
지금은 IOS 5.0 이상에서는 UDID를 추출하는
NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
메소드를 쓰면 안된다고 하네요.
그래서 나온 대안 중, MAC 어드레스 값을 추출하는 방법입니다.
일종의 PC의 랜카드 고유번호(?)라고 하는데 아이폰에서는 네트워크 접속 이더넷카드 시리얼 넘버라고 보시면 되요.
구글에서 떠도는 소스는 3G와 WI-FI 환경에서 값이 다르게 추출된다고 하네요.
형식은 FF:FF:FF:FF:FF:FF 이런식으로 나와요
그 문제를 해결한 소스입니다. 저도 어디서 구한 소스구요 ㅋ
개발자님들 대단하다.
구현 방법입니다.
Macaddress.h
char* getMacAddress(char* macAddress, char* ifName);
Macaddress.c
#include <sys/types.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> #include <net/if_dl.h> #include <ifaddrs.h> char* getMacAddress(char* macAddress, char* ifName) { int success; struct ifaddrs * addrs; struct ifaddrs * cursor; const struct sockaddr_dl * dlAddr; const unsigned char* base; int i; success = getifaddrs(&addrs) == 0; if (success) { cursor = addrs; while (cursor != 0) { if ( (cursor->ifa_addr->sa_family == AF_LINK) && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == 0x06) && strcmp(ifName, cursor->ifa_name)==0 ) { dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr; base = (const unsigned char*) &dlAddr->sdl_data[dlAddr->sdl_nlen]; strcpy(macAddress, ""); for (i = 0; i < dlAddr->sdl_alen; i++) { if (i != 0) { strcat(macAddress, ":"); } char partialAddr[3]; sprintf(partialAddr, "%02X", base[i]); strcat(macAddress, partialAddr); } } cursor = cursor->ifa_next; } freeifaddrs(addrs); } return macAddress; }
갖다 쓰실 때는 이런식으로
#import "MacAddress.h" char* macAddressString= (char*)malloc(18); NSString *macAddress= [[NSString alloc] initWithCString:getMacAddress(macAddressString,"en0") encoding:NSMacOSRomanStringEncoding]; NSLog(@" %@ ", macAddress);
'IT > iOS' 카테고리의 다른 글
iOS object-c 문자열 처리 (0) | 2012.10.24 |
---|---|
이미지뷰, 일반뷰 사각 테두리 만들기 (0) | 2012.08.24 |
인증서 관련된 오류 (0) | 2012.08.24 |
뷰 호출 관련 메소드 (0) | 2012.07.17 |
일반 , 레티나 기기 구별하기 (0) | 2012.06.29 |
iOS5 Automatic reference counting (0) | 2012.06.19 |
Custom Actionsheet (커스텀 액션쉬트 이미지 넣기) (0) | 2012.06.14 |
앱에서 다른 앱 호출 (0) | 2012.06.13 |