2013-04-11 4 views
2

내가 [[UIDevice currentDevice] uniqueIdentifier]가 거부되는 알고, 내가 사용 : 내 방법은 애플에 의해 승인되지 않으면UDID 대체품?

- (NSString *) uniqueDeviceIdentifier{ 
    NSString *macaddress = [[UIDevice currentDevice] macaddress]; 
    NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; 

    NSString *stringToHash = [NSString stringWithFormat:@"%@%@",macaddress,bundleIdentifier]; 
    NSString *uniqueIdentifier = [stringToHash stringFromMD5]; 

    return uniqueIdentifier; 
} 

, 무슨 방법 나는 고유 한 식별자를받을 수 있나요?

+ (NSString *)GetUUID { 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return [(NSString *)string autorelease]; 
} 

그리고 :

답변

5

이 프로젝트는 당신이하고있는 것과 비슷한 것을합니다 : https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5. 나는 그것이 현재 애플에 의해 받아 들여지고 있다고 생각한다. 실제로 질문에 대답하기 위해 고유 한 ID가 아닌 모든 앱에 동일한 ID를 가져 오는 다른 (공용) 방법은 없습니다. @ 이씨의 사용 방법 :

+ (NSString *)GetUUID { 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return [(NSString *)string autorelease]; 
} 

및 사용의 JeffWolski의 방법 @

[[NSUUID UUID] UUIDString]; 

작업 당신은 장치 ID 응용 프로그램 사이에 consistant 할 필요 그냥 것을 식별 할 수있는 방법이 필요하지 않은 경우 사용자 고유의 장치. 앱간에 작동하는 기기 ID가 필요한 경우 코드 또는 공개 소스 프로젝트를 사용하여 기기의 MAC 주소를 사용해야합니다.

UPDATE는

난 그냥 다른 해결책을 발견했다. [[UIDevice currentDevice] identifierForVendor]을 사용할 수 있습니다. 다시 말하지만이 기기 ID는 앱에서만 고유합니다. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

+0

위의 코드에서 내 방법이 올바른 경우? – pengwang

+0

당신의 방법은 효과가 있습니다; 그러나 다른 방법과 마찬가지로, 번들 ID를 MAC 주소에 추가하기 때문에 앱에 고유합니다. 맥 주소는 번들 ID가 고유하기 때문에 장치와 장치가 고유합니다. 기기에 고유하게 사용하려면 (모든 앱에서 동일하게) 번들 ID를 추가하는 부분을 삭제할 수 있습니다. –

+0

답장을 보내 주셔서 감사합니다. – pengwang

3

이 아이폰 OS 6에 그것은 당신에게 RFC 4122.

[[NSUUID UUID] UUIDString];

3

사용이 CFUUIDCreate()는 UUID를 만드는을 준수하는 UUID를 제공합니다 새로운 UDID는 iOS 5에서만 지원되지 않습니다.

3

당신이 할 수있는 한 가지 방법은 openUDID을 사용하여 교체하는 것입니다.