我知道这个问题已被问过999次。所有答案都说要转到系统偏好设置> 声音> 音效并确保"播放用户界面音效"被选中,或取消选中并重新检查它。
这对我不起作用。我已经检查过,但声音效果仍未播放。
更多信息:
SystemSoundID
播放音效。AVAudioPlayer
音效,但它确实有效。AudioToolbox.framework
与我的项目相关联。这也没用,所以我很确定我的代码没有问题。 6.我在Yosemite上运行我的Mac,使用XCode 6.1.1在OSx 10.10.1上运行。
我还没有在实际设备上测试它,因为我目前没有开发者帐户。我不想支付99美元的生活费用,只是为了发现某个地方有一个盒子,我没有选中。
还有什么我应该尝试的吗?
我的代码:
SoundEffect.h
#import <AudioToolbox/AudioServices.h>
@interface SoundEffect : NSObject
{
SystemSoundID soundID;
}
- (id)initWithSoundNamed:(NSString *)filename withExtension:(NSString*) extension;
- (void)play;
@end
SoundEffect.m
#import "SoundEffect.h"
@implementation SoundEffect
- (id)initWithSoundNamed:(NSString *)filename withExtension:(NSString *)extension
{
if ((self = [super init]))
{
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:filename withExtension:extension];
if (fileURL != nil)
{
NSLog(@"fileURL found");
SystemSoundID theSoundID;
OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
if (error == kAudioServicesNoError)
soundID = theSoundID;
}
}
return self;
}
- (void)dealloc
{
AudioServicesDisposeSystemSoundID(soundID);
}
- (void)play
{
if([[NSUserDefaults standardUserDefaults] boolForKey:soundEffectsKey]) {
NSLog(@"Play sound effect");
AudioServicesPlaySystemSound(soundID);
}else {
NSLog(@"Sound effects are disabled");
}
}
注意:我创建此对象并在项目中的任何位置播放它。当我尝试播放我的声音时,&#34;找到了fileURL&#34;和#34;播放音效&#34;都记录了。
答案 0 :(得分:0)
SystemSoundID customSound;
NSString *soundFile = [[NSBundle mainBundle]pathForResource:<#customSoundName#> ofType:<#soundFormat#>];
NSURL *soundURL = [NSURL fileURLWithPath:openMenu];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, & customSound);
AudioServicesPlaySystemSound(customSound);
这适用于我的