是否有方法确定正在运行应用程序的设备。如果可能的话,我想区分iPhone和iPod Touch。


当前回答

只是将iPhone 4S设备代码添加到这个线程…

iPhone 4S将返回字符串@"iPhone4,1"。

其他回答

NSString *deviceType = [[UIDevice currentDevice] systemName];

我可以保证,上述建议将适用于iOS 7及以上版本。我相信iOS 6也能运行。但我不确定。

你可以像这样使用UIDevice类:

NSString *deviceType = [UIDevice currentDevice].model;

if([deviceType isEqualToString:@"iPhone"])
    // it's an iPhone

请随意使用这个类(gist @ github)

代码已删除并重新定位到 https://gist.github.com/1323251

更新(01/14/11)

显然,这段代码现在有点过时了,但它肯定可以使用Brian Robbins提供的这个线程上的代码进行更新,其中包括更新模型的类似代码。谢谢你在这个帖子上的支持。

- (BOOL)deviceiPhoneOriPod
  {
    NSString *deviceType = [UIDevice currentDevice].model;
    if([deviceType rangeOfString:@"iPhone"].location!=NSNotFound)
      return YES;
    else
      return NO;
  }

我想添加一个私有API来检索设备的正面和外壳颜色:

UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString([device.systemVersion hasPrefix:@"7"] ? @"_deviceInfoForKey:" :  @"deviceInfoForKey:");
if ([device respondsToSelector:selector]) {
    NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}

我在博客上写过这方面的文章,并提供了一个示例应用程序:

http://www.futuretap.com/blog/device-colors/