Определение, может ли устройство вибрировать - iPhone против iPod Touch - PullRequest
5 голосов
/ 27 марта 2010

Разработка приложения, которое вибрирует, когда происходит определенное событие. У меня есть настройка для включения или выключения вибрации.

Я хотел бы иметь возможность отключить отображение настройки вибрации для таких устройств, как iPod Touch, которые не поддерживают функцию вибрации. Я знаю, что могу сделать это, определив модель устройства с помощью:

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

Затем я могу отключить опцию Вибрация в зависимости от модели устройства .. (т.е. не отображать его для iPod Touch). Это работает - но, я думаю, это плохо ... например, если будущие устройства iPod Touch будут включать функцию Vibrate, это решение сломается.

Итак, вопрос .. Как проверить, может ли устройство вибрировать ??

Любые предложения приветствуются. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 16 января 2011

Если вы просто используете 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/ артикул

0 голосов
/ 30 марта 2015

Я не знаю, можно ли проверить, поддерживает ли устройство вибрацию.

Но можно определить тип устройства.

- (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

Но вам придется идентифицировать каждое устройство вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...