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 файла, связанного.
Обновление для 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");