检测设备型号(iPhone / iPod Touch)的正确方法?

时间:2010-03-15 13:46:04

标签: iphone model detection ipod-touch

这是检测用户正在运行的设备的正确方法吗?

NSString *currentModel = [[UIDevice currentDevice] model];
if ([currentModel isEqualToString:@"iPhone"]) {
    // The user is running on iPhone so allow Call, Camera, etc.
} else {
    // The user is running on a different device (iPod / iPad / iPhone Simulator) disallow Call.
}

2 个答案:

答案 0 :(得分:7)

这不是一般解决方案,但Apple在许多情况下提供API调用以检查是否支持特定功能。例子可能是:

    {li>

    +isSourceTypeAvailable:+availableMediaTypesForSourceType: UIImagePickerController允许您检查相机是否可用于当前设备。

    +canSendMail
  • MFMailComposeViewController检查设备是否配置为发送邮件。

  • -canOpenURL类中的
  • UIApplication来检查是否可以打开URL。例如,它可用于检查是否可以拨打电话:

    if (![[UIApplication sharedApplication] canOpenURL:
                                     [NSURL URLWithString:@"tel://"]])
        //We cannot make a call - hide call button here
    

如果此类API调用可用于您的目的,我会使用它们,而不是依赖于硬编码的字符串标识符。

答案 1 :(得分:1)

我不确定我是否想要概括那么多(也就是说,最终可能会有带摄像头的iPod,我不知道iPhone总是被称为“iPhone”),但是,是的,这是公认的方式。