iOS выключает вибрировать программно без звука [Private API]

Я бы хотел, чтобы мой iPhone не вибрировал, когда он находится в беззвучном режиме, даже если он включен в настройках. Я хочу сделать это программно из приложения. Это для меня, поэтому я могу использовать частный API. Есть API, который управляет звуками в настройках? Вы знаете какое-нибудь решение?

Спасибо,

Фло

3 ответа

Решение

Я думаю, что следующий код может добиться цели. Вы должны запустить его откуда-то (не знаю, хотите ли вы, чтобы он запускался кнопкой или из приложения).

NSString *sbPath = @"/var/mobile/Library/Preferences/com.apple.springboard.plist";
NSMutableDictionary *sbDict = [[NSMutableDictionary alloc] initWithContentsOfFile:sbPath];
[sbDict setValue:[NSNumber numberWithBool:NO] forKey:@"silent-vibrate"];
[sbDict writeToFile:filePath atomically: YES];
notify_post("com.apple.SpringBoard/Prefs");

Сам не пробовал, но нашел что-то вроде того, что вы ищете в настройке Smartvibrate. Это изменит параметр settings, поэтому вы должны снова включить его после завершения работы приложения.

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

Обновление ответа @baptiste-truchot (и проблемы @vrwim):

Это необходимо

#include <notify.h>

в верхней части.h файла, связанного.

Документ Apple о notify.h

Обновление для ios 8:

NSMutableDictionary *dict; BOOL newState = NO;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
dict = [[defaults persistentDomainForName:@"com.apple.springboard"] mutableCopy] ?:           [[NSMutableDictionary alloc] init];
NSNumber *value = [NSNumber numberWithBool:newState];
[dict setValue:value forKey:@"ring-vibrate"];
[dict setValue:value forKey:@"silent-vibrate"];
[defaults setPersistentDomain:dict forName:@"com.apple.springboard"];
notify_post("com.apple.springboard.ring-vibrate.changed");
notify_post("com.apple.springboard.silent-vibrate.changed");
Другие вопросы по тегам