刚做了个业务需求,需要像微信一样可以在前台收到消息时调用声音和震动,但是设置声音和震动,是单独分开控制,让我疑惑的是,当我直接调用系统声音代码
AudioServicesPlaySystemSound(1007);
时,发现还是有震动效果,之后我又尝试了其他声音,发现只要调用系统设置好的声音列表,都会自带震动,除非是自己的音频文件,但是我又不想去搞一个音频文件,思考了一阵子,突发奇想,如果我直接从手机系统路径拿出这个音频文件,会不会同样能实现只响系统音的效果呢?结果发现我的想法是对的!以下是我调用的代码:
SystemSoundID sound;
NSString*path = [NSString stringWithFormat:@"/System/Library/Audio/UISounds/%@.%@",@"sms-received1",@"caf"];
OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path],&sound);
f(error!=kAudioServicesNoError)
{
sound=0;
}
AudioServicesPlaySystemSound(sound);