AudioServicesPlaySystemSound在iOS8中不起作用

时间:2014-09-22 16:52:52

标签: audio ios8

自从iOS3以来,我的应用程序中已经有了这个代码,而且它一直在运行。据我所知,这些库在iOS8中根本没有变化,但它在iOS8中不起作用。它不会崩溃或任何事情,它只是从不播放声音效果。

有什么想法吗?

static void completionCallback (SystemSoundID  mySSID, void* myself) {
    AudioServicesRemoveSystemSoundCompletion(mySSID);
    AudioServicesDisposeSystemSoundID(mySSID);
}

+ (void) playSound: (NSString *)path {
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);    
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, completionCallback, NULL);
    AudioServicesPlaySystemSound(soundID);
}

5 个答案:

答案 0 :(得分:9)

我找到了我的问题的答案,它可能会解决你的问题。我进入设置并更改了铃声和警报的音量,这是在声音部分。由于某种原因,我的设定为零。我没有意识到AudioServices连接到这个声级。根据我的需要,我可能会转而使用AVAudioPlayer。

答案 1 :(得分:3)

我知道这个帖子有点旧。但我最近遇到了这个问题,这是我解决这个问题的方法。

转到settings> sounds> Ringer and alerts。增加音量并尝试播放声音。大概可能会有效。

此外,您正在使用的代码也将很快弃用。请使用以下内容。

+(void)playClickSound
{
    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"click_sound.mp3" withExtension:nil]; //filename can include extension e.g. @"bang.wav"
    if (fileURL)
    {
        SystemSoundID theSoundID;
        OSStatus error = AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &theSoundID);
        if (error == kAudioServicesNoError)
        {
            AudioServicesPlaySystemSoundWithCompletion(theSoundID, ^{
                AudioServicesDisposeSystemSoundID(theSoundID);
            });
        }
    }
}

答案 2 :(得分:2)

在我的情况下,声音很好......但是ipad正在静音。从底部(控制中心)向上滑动并取消静音

答案 3 :(得分:1)

我有类似的问题。它一度工作正常但后来停止了工作。

我一遍又一遍地检查了代码,然后用Google搜索我的问题,看看能不能找到任何线索。

事实证明,只需将设备关闭再重新打开即可解决问题!

答案 4 :(得分:0)

对我来说,这是翻转的响铃/静音开关(上/下音量按钮上方的开关)。 SpriteKit声音仍然完美无缺,所以这种行为非常烦人。