iOS - 为自定义键盘播放Tock声音

时间:2015-04-29 16:07:28

标签: ios objective-c iphone xcode keyboard

我正在尝试为我的自定义键盘播放Tock声音。

我尝试过:

[[UIDevice currentDevice] playInputClick];

NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
AudioServicesDisposeSystemSoundID(soundID);

AudioServicesPlaySystemSound(0x450);

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];
myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
myAudioPlayer.numberOfLoops = 1;
[myAudioPlayer play];

这给了我一个错误:

AudioSessionClient: Couldn't connect to com.apple.audio.AudioSession
Couldn't connect to com.apple.audio.AudioQueueServer; AudioQueue will not be usable

并查看了此link

当我在ViewControllers(而不是自定义键盘)中尝试这些代码时,一切正常。但是当我在我的自定义键盘上测试它时,它闲置了至少10秒钟,我听不到任何声音。

我还确保我的iPhone没有处于静音模式,扬声器没有损坏,键盘点击已启用。我在iPhone和iPad上测试了这些代码,但结果却是相同的

Xcode版本6.3.1 iOS版本8.3

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法。

在Info.plist中。

KeyboardViewController.m

并在我的dispatch_async(dispatch_get_main_queue(), ^{ AudioServicesPlaySystemSound(1104); });

上使用此代码
response