Determining If Your Device Can Vibrate - iPhone vs. iPod Touch

Developing an application that vibrates when a specific event occurs. I have a setting to enable or disable the vibration function.

I would like to turn off the vibration display for devices such as iPod Touch that do not have vibration. I know that I can do this by defining a device model using:

UIDevice *thisDevice = [UIDevice currentDevice];
    modelOfDevice = [thisDevice model];

Then I can turn off the Vibrate parameter, depending on the model ofOfDevice .. (i.e. do not display it for iPod Touch). It works, but I think it is a bad form. For example, if future iPod Touch devices include Vibrate features, this solution will break.

So the question is .. How to check if the device can vibrate?

Any suggestions appreciated. Thanks in advance.

+5
2

AudioServicesPlaySystemSound (kSystemSoundID_Vibrate), , , , , - Apple, . [] [1] , AudioServicesPlayAlertSound (kSystemSoundID_Vibrate), , , , ( iPod Touch / ).

[1]: http://blog.mugunthkumar.com/coding/iphone-tutorial-better-way-to-check-capabilities-of-ios-devices/

+1

, , .

.

- (NSString *)platformRawString 
{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}

- (NSString *)platformNiceString {
    NSString *platform = [self platformRawString];
    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"Verizon iPhone 4";
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone6 Plus";
    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad 1";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (4G,2)";
    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (4G,3)";
    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
    return platform;
}

platformNiceString.

NSString *device = [self platformNiceString];
if ([device isEqualToString: @"iPhone6 Plus"]) //do rest of the code here

.

0

All Articles