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 все еще работают отлично, поэтому это поведение довольно раздражает.