AudioServicesPlaySystemSound не работает в 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);
}

Ответ 1

Я нашел ответ на мою проблему, он может исправить вашу. Я вошел в настройки и изменил громкость Ringer и Alerts, это было в разделе "Звуки". По какой-то причине моя была установлена ​​на ноль. Я не понимал, что AudioServices подключаются к этому уровню звука. Для моих нужд я, вероятно, перейду к использованию AVAudioPlayer.

Ответ 2

В моем случае звук был включен нормально... но ipad был включен Mute. Проведите вверх снизу (центр управления) и включите звук

Ответ 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);
            });
        }
    }
}

Ответ 4

У меня была аналогичная проблема. В какой-то момент он работал нормально, но позже перестал работать.

Я снова и снова проверял код, и я искал свою проблему, чтобы узнать, не найду ли я никаких подсказок.

Оказалось, что просто выключить устройство, а затем снова включить проблему!

Ответ 5

Для меня это был звонок/тихий переключатель, который был перевернут (переключатель выше кнопок вверх/вниз). Звуки SpriteKit все еще работают отлично, поэтому это поведение довольно раздражает.