Правильный метод определения модели устройства (iPhone / iPod Touch)? - PullRequest
2 голосов
/ 15 марта 2010

Это правильный способ определить, на каком устройстве работает пользователь?

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 ]

7 голосов
/ 15 марта 2010

Это не общее решение, но во многих случаях Apple предоставляет вызовы API для проверки, поддерживается ли конкретная функция или нет. Примеры могут быть:

  • +isSourceTypeAvailable: и +availableMediaTypesForSourceType: in UIImagePickerController, что позволяет проверить, доступна ли камера для текущего устройства.

  • +canSendMail в MFMailComposeViewController, чтобы проверить, настроено ли устройство для отправки почты.

  • -canOpenURL в классе UIApplication, чтобы проверить, можно ли открыть URL. Например, его можно использовать для проверки возможности телефонного звонка:

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

Если такие вызовы API доступны для вашей цели, я бы использовал их, а не полагался на жестко закодированные строковые идентификаторы.

1 голос
/ 15 марта 2010

Я не уверен, что хотел бы так много обобщать (то есть, в конечном счете, может быть iPod с камерой, и я не знаю, что iPhone всегда будет называться «iPhone»), но да,это принятый путь.

...