Даже если вы не можете определить это с помощью SDK, вы можете использовать свои знания о текущих моделях. Если вы ограничиваетесь iPhone 3G, iPhone 3GS и iPod Touch 2-го поколения (лично я не поддерживаю более старые версии iPhone edge или iPod Touch 1-го поколения), то вы уже знаете, что модели iPhone поставляются с реальным устройством AGPS, а iPod Touch 2nd поколение может использовать - если и когда доступно - горячие точки Wi-Fi с геотегами. Затем вы можете использовать следующий метод для определения модели, на которой вы работаете:
- (NSString *) deviceModel{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *answer = malloc(size);
sysctlbyname("hw.machine", answer, &size, NULL, 0);
NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding];
free(answer);
return results;
}
Метод возвращает @ "iPhone2,1" для 3GS, @ "iPhone1,2" для 3G и @ "iPod2,1" для ipod touch 2-го поколения; Вы называете это следующим образом
NSString *deviceModel = [[self deviceModel] retain];
и используйте его следующим образом:
if([self.deviceModel isEqualToString:@"Pod2,1"]){
// no real GPS unit available
// no camera available
...
}