iOS 에서 장치 의 유일한 표시 자 를 가 져 오 는 방법 에 대한 자세 한 설명
우선 iOS 에서 장치 의 유일한 표시 자 를 가 져 오 는 방법 은 버 전의 업데이트 에 따라 달라 집 니 다.iOS 2.0 버 전 이후 UIDevice 는 장치 의 유일한 식별 자 를 가 져 오 는 방법 인 유 니 크 Identifier 를 제공 합 니 다.이 방법 을 통 해 장치 의 시리 얼 번 호 를 가 져 올 수 있 습 니 다.이것 도 지금까지 유일 하 게 확인 할 수 있 는 유일한 표시 자 입 니 다.좋 은 경 치 는 길지 않다.이 유일한 식별 자 는 휴대 전화 와 일일이 대응 하기 때문에 애플 은 사용자 의 프라이버시 를 누설 할 수 있다 고 생각 하기 때문에 iOS 5.0 이후 이 방법 은 폐기 되 었 다.iOS 6.0 시스템 은 유 니 크 Identifier 를 교체 하 는 두 개의 인 터 페 이 스 를 추 가 했 습 니 다.각각 identifier ForVendor,advertising Identifier 입 니 다.그러나 이 두 인 터 페 이 스 는 다시 설치 할 때 수 치 를 바 꿉 니 다.유일한 표시 자가 아니 기 때문에 개발 자 는 와 이 파이 의 mac 주 소 를 사용 하여 대체 합 니 다.iOS 7 에 서 는 애플 이 mac 주 소 를 다시 차단 하기 때문에 개발 자 는 다시 방향 을 바 꾸 어 가 져 온 UDID 를 KeyChain 으로 저장 합 니 다.그러면 나중에 앱 이 삭제 하고 다시 설치 하 더 라 도 KeyChain 에서 읽 을 수 있 습 니 다.
먼저 장치 의 UUID 를 저장 합 니 다.클래스 방법+(id)UUID 를 사용 할 수 있 는 클래스 방법 입 니 다.이 방법 을 사용 하면 UUID 를 얻 을 수 있 습 니 다.다음 코드 를 통 해 UUID 문자열 을 얻 을 수 있 습 니 다:
NSString *uuid = [[NSUUID UUID] UUIDString];
iOS 6 에 추 가 된 Vindor 표시 자(IDFV-identifier ForVendor)를 저장 할 수도 있 으 며,이 IDFV 를 가 져 오 는 새로운 방법 은 기 존 UIDevice 클래스 에 추 가 됩 니 다.advertising Identifier 와 마찬가지 로 이 방법 은 NSUUID 대상 을 되 돌려 줍 니 다.
NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
사용자 가 같은 vendor 에 대응 하 는 모든 프로그램 을 마 운 트 해제 한 다음 같은 vendor 가 제공 하 는 프로그램 을 다시 설치 하면 identifier ForVendor 가 리 셋 되 기 때문에 KeyChain 으로 저장 해 야 합 니 다.KeyChain(열쇠 꾸러미)은 애플 장 치 를 사용 하여 자주 사용 하 는 것 입 니 다.보통 디 버 깅 을 하려 면 인증서 같은 것 을 설치 해 야 합 니 다.이 인증 서 는 KeyChain 에 저장 되 어 있 습 니 다.그리고 저희 가 평소에 웹 페이지 기록 을 조회 하 는 계 정 비밀번호 도 모두 KeyChain 에 기록 되 어 있 습 니 다.iOS 의 KeyChain 은 OS X 에 비해 간단 하 며 전체 시스템 에 하나의 KeyChain 만 있 고 모든 프로그램 이 KeyChain 에 데 이 터 를 기록 할 수 있 으 며 자신의 프로그램 이 KeyChain 에 기록 한 데이터 만 읽 을 수 있다.iOS 에서 Security.framework 프레임 워 크 는 키 체인 을 조작 하 는 네 가지 주요 방법 을 제공 합 니 다.
// UUID :
CFUUIDRef uuid = CFUUIDCreate(NULL);
assert(uuid != NULL);
CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);
[SAMKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]
forService:@"com.yourapp.yourcompany"account:@"user"];
// UUID:
NSString *retrieveuuid = [SAMKeychain passwordForService:@"com.yourapp.yourcompany"account:@"user"];
**주의:setPassword 와 password ForSevice 방법 중의*services 와 accounts 매개 변 수 는 일치 해 야 합 니 다.더 자세 한 용법 설명 은 볼 수 있 습 니 다.
기본 적 인 실현 방향 은 바로 이렇다.다음은 구체 적 인 실현 코드 이 니 참고 하 시기 바 랍 니 다.
+ (NSString *)getDeviceId
{
NSString * currentDeviceUUIDStr = [SAMKeychain passwordForService:@" "account:@"uuid"];
if (currentDeviceUUIDStr == nil || [currentDeviceUUIDStr isEqualToString:@""])
{
NSUUID * currentDeviceUUID = [UIDevice currentDevice].identifierForVendor;
currentDeviceUUIDStr = currentDeviceUUID.UUIDString;
currentDeviceUUIDStr = [currentDeviceUUIDStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
currentDeviceUUIDStr = [currentDeviceUUIDStr lowercaseString];
[SAMKeychain setPassword: currentDeviceUUIDStr forService:@" "account:@"uuid"];
}
return currentDeviceUUIDStr;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.그리고 여러분 들 이 저 희 를 많이 지지 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.