¿Puedo determinar / cómo, si un dispositivo tiene vibración o no?

Tengo algunas configuraciones que habilitan / deshabilitan la vibración para ciertas acciones, pero me parece inútil mostrarlas si el dispositivo no tiene la capacidad de vibrar. ¿Hay alguna forma de verificar si la persona está usando un iPod touch y si tiene vibración?

Este código debería hacerlo, tenga en count que 'asume' que el iPhone es el único dispositivo con capacidad de vibración. Cuál es por el momento …

- (NSString *)machine { static NSString *machine = nil; // we keep name around (its like 10 bytes....) forever to stop lots of little mallocs; if(machine == nil) { char * name = nil; size_t size; // Set 'oldp' parameter to NULL to get the size of the data // returned so we can allocate appropriate amount of space sysctlbyname("hw.machine", NULL, &size, NULL, 0); // Allocate the space to store name name = malloc(size); // Get the platform name sysctlbyname("hw.machine", name, &size, NULL, 0); // Place name into a string machine = [[NSString stringWithUTF8String:name] retain]; // Done with this free(name); } return machine; } -(BOOL)hasVibration { NSString * machine = [self machine]; if([[machine uppercaseString] rangeOfString:@"IPHONE"].location != NSNotFound) { return YES; } return NO; } 

Acabo de editar para detener la llamada de la máquina y hacer muchas pequeñas llamadas cada vez que se llama.

No estoy seguro de que haya una manera de hacerlo, aparte de hacer verificaciones de models, lo que probablemente no sea un gran enfoque. Sé que Apple proporciona:

  AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 

Si el dispositivo puede vibrar, lo hará. En dispositivos sin vibración, no hará nada. Hay otra llamada:

 AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 

Este vibrará el dispositivo si tiene la capacidad o el dispositivo emitirá un pitido.

Podría ser mejor tener la configuration y tener alguna explicación sobre la configuration porque un usuario puede desear el pitido cuando no tiene un dispositivo vibratorio. Tal vez llame a la configuration de algo que no sea "Vibration Alert On / Off".