/ iFile

活用iFile(二)——调整系统声音行为

会场内,你要发了一个很简短,但很重要的短信,你很想知道这条短信是否正确送出。你不能一直盯着屏幕以免被上司盯上(手机已设为静音模式)。怎么办?
上述场景,你无法将铃音打开,最好的方式是短信成功发送以后反馈给你一个小小的震动。下面,就以此为例介绍系统反馈的一些修改方法。

工具:iFile

修改内容:SystemSoundBehaviour.plist 这个文件记录了系统各种声音设置情况下的声音与震动组合。

文件路径://System/Library/PrivateFrameworks/MediaToolbox.framework/Nxx/ ,其中 “xx” 为阿拉伯数字,与设备相关。如:iPhone4为 “N90”,iPhone4S为“N94 ”。

选择“属性表编辑器”打开,找到SMSSent字段。

由于这个文件内的字段都比较长,你可以把旋转锁定打开,然后将设备横过来,以便完整地看到字段名,如图:

** 一、短信发送反馈的修改**

****打开SMSSent字段,可以看到字典内包含了两个数组:

数组1:RingVibrateIgnore,SilentVibrateIgnore,RingerSwitchOff

数组2:RingVibrateIgnore,SilentVibrateIgnore,RingerSwitchOn


分别定义了系统静音和有声情况下的音效组合。

进入两个数组可以看到:

数组1内一片空白:

而数组2有一个字符串,值为:Beep


从以上各图,结合我们使用的经验,可以判断:数组1定义为在静音情况下什么也不做,而数组2定义为在系统不静音时发声提醒(Beep)。

那么,我们现在要做的就是给系统静音情况下增加“震动”。

1、回到数组1,点击右下角“+”号。

2、添加一个字符串。

3、点击新增的字符串,为其赋值

4、输入值“Vibrate”(震动的属性词)

保存以后,重启设备。现在系统静音时再发短信看看,是不是有震动了?

小结:

****从上面的修改可以看到,系统提供的可定义项包括:

1、SilentVibrateOff / SilentVibrateon(静音震动开关是否打开,可以参看设备系统设置的声音项);

2、RingerSwitchOff / RingerSwitchOn(铃音是否静音状态)。

并由此产生各种组合。而各个组合都匹配以一个字典表确定系统行为(震动、发声或者啥也不做)。只要字典表内有“Beep”无论当前是否静音状态,照样发声,只要字典表内有“Vibrate”无论当前震动是否真的打开,照样震动。

二、键盘震动反馈

****接下来再举一个键盘震动反馈的例子,巩固上面的内容。

“属性表编辑器”打开SystemSoundBehaviour.plist,找到KeyPressed字段。

可以看到字典内也是包含两个数组:

RingVibrateIgnore,SilentVibrateIgnore,RingerSwitchOff

RingVibrateIgnore,SilentVibrateIgnore,RingerSwitchOn

分别对应静音和非静音情况下的行为,且都没有包含“Vibrate”值。在第一条按照前文方法添加“Vibrate”,重启设备以后,打字就有“震动反馈”了。如果再在第二条添加“Vibrate”值的话,你会发现,非静音情况下,键盘也随你在指尖在颤动。

三、其他

SystemSoundBehaviour.plist 有600多行,定义了约60余种系统行为对应的反馈设定,这里就不一一列出,抛砖引玉吧。

DIYer们看到BeginRecording、CameraShutter、ConnectedToPower(我最讨厌半夜里想充电的时候他叮的一下,这下终于清静了!)、LowPower、MailReceived、ScreenLocked、ScreenUnlocked这些熟悉的字段时应该是顶不住的兴奋吧?

越狱为我们打开的是探索之门,你说呢?