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