2010-12-08 3 views
2

사용자가 다양한 서비스를 평가할 수있게 해주는 클라이언트 iPhone 응용 프로그램에서 작업하고 있습니다. 등록이나 로그인이 없습니다.iPhone 응용 프로그램에서 특정 iPhone 장치로 투표 제한

사용자는 서비스 등급을 변경할 수는 있지만 반복적으로 서비스 등급을 매길 수 없습니다. 현재 상태가 유지되면서 앱을 삭제하고 재설치 할 수 있으며 사용자는 다시 투표 할 수 있습니다.

우리는 장치 ID를 사용하는 것을 고려했지만 동료가 이에 대해 권장한다고 언급했습니다. 휴대 전화가 상점으로 반송되어 재발행 된 경우 정확하게 이해하면 새 사용자가 동일한 앱을 다운로드합니다. 나에게 꽤 좋은 사례 인 것 같지만 기업 내에서 일어날 수 있다고 생각합니다.

투표를 특정 장치로 제한하는 현명한 방법이 있습니까? 아마도 키 체인을 사용하고 있을까요?

모든 포인터가 크게 감사하겠습니다.

답변

1

UDID와 UUID의 차이점을 알아 두는 것이 중요합니다.

UDID "고유 장치 ID"는 하드웨어에 따라 다릅니다. 특정 장치에 대해 절대로 바뀌지 않습니다. 이런 이유로 개인 정보 보호 문제가되어 왔으며 Apple은이를 사용하려고하는 응용 프로그램을 차단하고 있습니다. 결과적으로 애플은 옵트 아웃 가능한 "장치 ID"해시를 생성했습니다. 특히, 광고 사용을 위해. 이 새로운 ID 해시는 IFA라고하며 iOS 6.0 이상에서 사용할 수 있습니다.

UUID "universally unique id"는 하드웨어와 관련이 없습니다. 장치를 식별하는 데 사용되는 해시입니다. 특히 절대 값은 아닙니다. 예를 들어 PhoneGap은 장치 속성을 기반으로 UUID를 생성합니다. 이것은 device.uuid를 할 때 얻는 것입니다. 앱을 삭제하고 다시 설치하면 새 ID 해시를 받게됩니다. UUID가 Apple에 의해 차단되지 않았습니다.

귀하의 경우에 가장 적합한 해결책은 iOS < 6.0의 백업으로 OpenUDID를 사용하여 IFA를 사용하는 것입니다.

다음은 우리가 사용하는 코드입니다. IFA를 사용할 수 없다면, OpenUDID를 얻으십시오. OpenUDID를 설치해야합니다. 자세한 내용은 여기 https://github.com/ylechelle/OpenUDID을 참조하십시오.

NSString* uuid = nil; 
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { 
    // IOS 6 new Unique Identifier implementation, IFA 
    uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 
} else { 
    // Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid 
    // Here I use OpenUDID (you have to import it into your project) 
    // https://github.com/ylechelle/OpenUDID 
    NSString* openUDID = [OpenUDID value]; 
    uuid = [OpenUDID value]; 
} 
+0

나는 비슷한 요구를 가지고있었습니다. 한 해킹 된 앱이 원래 UUID 대신 생성 된 UUID를 보낼 때마다 어떻게 될까요? 실제로 설치된 원래 App에서 UUID를 확인하는 방법이 있습니까? –

+0

사용자가 OS를 5.0에서 6.0으로 업데이트하면 어떻게됩니까? 처음 UDID는 OpenUDID에서 가져온 다음 ios 6 이상에서는 identifierForVendor를 사용합니다. – Developer

관련 문제