método adecuado para detectar modelo de dispositivo (iPhone / iPod Touch)?
-
20-09-2019 - |
Pregunta
Es esta la forma adecuada para detectar el dispositivo de un usuario está ejecutando?
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.
}
Solución
No es una solución general de Apple, pero en muchos casos ofrece llamadas a la API para comprobar wether característica específica es compatible o no. Ejemplos podrían ser:
-
+isSourceTypeAvailable:
y+availableMediaTypesForSourceType:
enUIImagePickerController
que le permite comprobar si la cámara está disponible para el dispositivo actual. -
+canSendMail
enMFMailComposeViewController
para comprobar si el dispositivo está configurado para enviar correo. -
-canOpenURL
en claseUIApplication
para comprobar si se puede abrir la URL. Por ejemplo se puede utilizar para comprobar si es posible hacer una llamada telefónica:if (![[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"tel://"]]) //We cannot make a call - hide call button here
Si estas llamadas a la API están disponibles para su propósito usaría en lugar de confiar en los identificadores de cadenas codificadas.
Otros consejos
No estoy seguro de que me gustaría generalizar que gran parte (es decir, es posible que el tiempo será un iPod con una cámara, y no sé que el iPhone siempre será llamado "iPhone"), pero sí, esta es la forma aceptada.