iPhone: программно проверьте, включена ли вибрация

Можно ли программно проверить, работает ли системная опция iPhone

Settings -> Sounds -> Vibrate on Ring

включен?

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


person A.G.    schedule 10.10.2013    source источник


Ответы (2)


Вы не можете. Потому что Apple не предоставляет API для доступа к приложению настроек iPhone.

person Toseef Khilji    schedule 10.10.2013

может быть, вы могли бы попробовать и убедиться, что вы запускаете приложение в iDevice, потому что симулятор не имеет режима без звука или звонка :)

Новые изменения

-(BOOL)silenced 
{
     #if TARGET_IPHONE_SIMULATOR
        // return NO in simulator. Code causes crashes for some reason.
     return NO;
     #endif

    CFStringRef state;
    UInt32 propertySize = sizeof(CFStringRef);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
    if(CFStringGetLength(state) > 0)
        return NO;
    else
        return YES;
}

и вы можете вызвать этот метод следующим образом

if ([self silenced]) 
{
    NSLog(@"silenced");
} else {
    NSLog(@"not silenced");
}

надеюсь, это поможет вам!

person D-eptdeveloper    schedule 10.10.2013
comment
Я протестировал алгоритм с включением/выключением вибрации и включением/выключением беззвучного режима, но значением состояния является @Speaker во всех 4 случаях... (проверено на iPhone 5, iOS 7.0.2). - person A.G.; 14.10.2013