iOS模拟器无法播放音效

时间:2015-01-29 17:43:38

标签: ios ios-simulator audiotoolbox

我知道这个问题已被问过999次。所有答案都说要转到系统偏好设置> 声音> 音效并确保"播放用户界面音效"被选中,或取消选中并重新检查它。

这对我不起作用。我已经检查过,但声音效果仍未播放。

更多信息:

  1. 我正在尝试使用SystemSoundID播放音效。
  2. 我之前使用过AVAudioPlayer音效,但它确实有效。
  3. 在模拟器中通过Safari访问YouTube,视频声音 播放。
  4. 我已将AudioToolbox.framework与我的项目相关联。
  5. 我从here下载了Apple示例代码。
  6. 这也没用,所以我很确定我的代码没有问题。 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;都记录了。

    来源:Play a short sound in iOS

1 个答案:

答案 0 :(得分:0)

    SystemSoundID customSound;

NSString *soundFile = [[NSBundle mainBundle]pathForResource:<#customSoundName#> ofType:<#soundFormat#>];
    NSURL *soundURL = [NSURL fileURLWithPath:openMenu];
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, & customSound);
        AudioServicesPlaySystemSound(customSound);

这适用于我的