2013-10-11 6 views
7

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

Спасибо,

Фло

ответ

1

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

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 подстройке. Это изменит параметр параметров, поэтому вы должны изменить его на то, когда ваше приложение закончится.

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

0

Обновление для ИОС 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"); 
+1

я получаю "неявное объявление функции 'notify_post' недействителен в C99" при попытке это в Xcode 6.2 (Swift проект с Bridging заголовком на Objective-C) Edit: также в проекте Obj-C , – vrwim

+0

Это все еще работает на вас? Я не могу сделать эту работу – Jan

0

Обновление @ Батист truchot 's ответ (и @vrwim' беспокойство s):

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

#include <notify.h> 

на вершине связанный файл .h.

Apple doc's about notify.h