2009-10-01 5 views

답변

1

ioreg 명령을 사용하여 수신 된 결과를 grep하십시오. 미니멀 구현 :

- (NSString*)getConnectedIphoneUIID 
{ 
NSTask *ioRegTask = [[NSTask alloc] init]; 
[ioRegTask setLaunchPath:@"/usr/sbin/ioreg"]; 
[ioRegTask setArguments:[NSArray arrayWithObjects:@"-Src",@"IOUSBDevice",nil]]; 

NSTask *grepTask = [[NSTask alloc] init]; 
[grepTask setLaunchPath:@"/usr/bin/grep"]; 
[grepTask setArguments:[NSArray arrayWithObjects:@"-i", @"usb serial number", nil]]; 

NSPipe *ioregToGrepPipe = [[NSPipe alloc] init]; 
[ioRegTask setStandardOutput:ioregToGrepPipe]; 
[grepTask setStandardInput:ioregToGrepPipe]; 

NSPipe *outputPipe = [[NSPipe alloc] init]; 
[grepTask setStandardOutput:outputPipe]; 
NSFileHandle *outputFileHandle = [[outputPipe fileHandleForReading] retain]; 

[ioRegTask launch]; 
[grepTask launch]; 


NSData *outputData = [[outputFileHandle readDataToEndOfFile] retain]; 

[ioRegTask release]; 
[grepTask release]; 
[outputData release]; 

NSString *nvcap = [[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding]; 

    return nvcap; 
    } 

내가 "USB 일련 번호"가 거기에 나와있는 많은 장치가 그냥 경우에, 정말 아이폰의 확인, 결과를 분석 더 많은 검사를 통합하고 수 속성 집합 . "SupportsIPhoneOS"속성을 확인하면 장치의 ID가 더 확인됩니다. 이렇게하면 실제로 연결된 iPhone/iPod 장치 목록을 만들고 "USB 일련 번호"속성에서 UUID를 가져올 수 있습니다.

+0

위의 내용을 기반으로 한 라이너 쉘 명령은 다음과 같습니다. ioreg -Src IOUSBDevice | perl -nle '/ USB 일련 번호 인 경우 $ 1을 출력합니다. + "(\ w {40})"/ " –

-1

이 시도 : 연결된 각 장치에 대한

[[UIDevice device] uniqueIdentifier] 

합니다.

+0

좋아,하지만 연결된 장치 목록을 어떻게 얻을 수 있습니까? 거기에 맥 응용 프로그램에서 얻을 수있는 방법이 있나요? – luvieere

0

애플은 아이폰을 꽤 잘 감추고있다. 나는 당신이 USB를 통해 몇 가지 저수준 코드없이 iPhone에서 무엇이든 쿼리하는 것을 쉽게 찾을 수 있다고 생각하지 않는다.

거기에 특별한 이유가 있습니까? Xcode의 Organizer 창을보고 거기에 연결된 장치를 볼 수 없습니까? 주최자는 충돌 사고, iPhone 콘솔, 스크린 샷 및 프로비저닝을 포함하여 연결된 장치에 대한 UUID 및 추가 정보를 표시합니다.

+0

나는 여기에서 성취하려는 것에 대해 더 많은 자료를 요구할 것이다. –

+0

Windows COM iTunes API에서 가능한 것처럼 프로그래밍 방식으로 해당 데이터를 가져 오려고합니다. 얻은 UUID를 기반으로 장치 별 인증 및 등록을위한 또 다른 키를 생성해야합니다. 어쨌든, 나는 아이튠즈 API가 윈도우에서 할 수있게하는 것처럼 맥 컴퓨터에 연결된 아이폰 장치를 구별 할 필요가있다. – luvieere

관련 문제