2010-04-07 3 views
0

프로그래밍하는 동안 (3.2 버전에서) 장치 모델 (iphone, ipad, ipod touch, iphpne 시뮬레이터)을 식별 할 수 없습니다. Alide는 UIDevice 클래스와 다른 방법으로 시도했지만 ipad에 연결할 때 ipad로 모델을 가져올 수 없습니다. 때마다 그것은 ipad 이외의 모델을 제공하고 있습니다. 그래서 어느 누구도 나를 도와주세요. 고맙습니다.3.2 버전으로 프로그래밍하는 동안 iphone, ipad, ipod touch, iphpne 시뮬레이터를 식별하는 방법은 무엇입니까?

+0

모델을 얻는 방법을 보여주는 코드 조각이 도움이 될 수 있습니다. 또한 실제로 시뮬레이터의 실제 iPad에서 실행중인 경우. –

+1

'[UIDevice model]'을 사용 했습니까? – notnoop

답변

1

이 코드를 사용했는데 정말 잘 작동 :이 arstechnica.com에서 온

size_t size; 
sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
char *machine = malloc(size); 
sysctlbyname("hw.machine", machine, &size, NULL, 0); 
NSString *platform = [NSString stringWithCString:machine]; 
free(machine); 
return platform; 

.

+0

네,하지만 IMHO는 공개 API의 일부가 아니므로, 새로운 iPhoneOS 버전 또는 가장 나쁜 버전으로 문제가 생길 수 있습니다. 앱이 거부 될 수 있습니다. – yonel

+0

불행히도 당신은 맞을 수 있습니다 ... 나는 지금 App Store에서 판매중인 앱에서 사용했습니다. 실제 문제는 미래의 iPhoneOS 버전에서만있을 수 있습니다. – bontoJR

0

일반적인 방법은 직접 장치 모델을 추측하려고하지 않는 것입니다. 대부분의 경우 (원래 요구 사항을 설명하지는 않았지만) 프레임 워크는 API의 HW 기능을 제공하며 실제로 사용하는 모델을 실제로 알 필요는 없습니다. 카메라를 사용할 수있는 경우 당신이 알고 싶은 경우, 예를 들어

는, 당신은 당신의 코드에서 확인하지 않을거야 당신은 단지 공용 API의 일부입니다 [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] 같은 것을 물어거야 if (model==iphone3G || model==iPhone3Gs)

.

0

[UIDevice userInterfaceIdiom]을 확인하는 것이 좋습니다. iPad 또는 iPad sim에서 UIUserInterfaceIdiomPad를 반환합니다. 다른 장치 나 심의 경우 UIUserInterfaceIdiomPhone을 반환합니다.

관련 문제