Я знаю, что этот вопрос задавали 999 раз. Во всех ответах говорится, что нужно перейти в Системные настройки > Звук > Звуковые эффекты и убедиться, что установлен флажок "Воспроизвести звуковые эффекты пользовательского интерфейса", или чтобы снять флажок и перепроверить его.
Это не работает для меня. Я проверил, но звуковые эффекты все еще не воспроизводятся.
Еще немного информации:
- Я пытаюсь использовать
SystemSoundID
для воспроизведения звуковых эффектов. - Ранее я использовал
AVAudioPlayer
для звуковых эффектов, и это сработало. - Зашел на YouTube из Safari в симуляторе и звук видео заиграл.
- Я связал
AudioToolbox.framework
со своим проектом. - Я скачал пример кода Apple с здесь.
Это тоже не воспроизводилось, поэтому я совершенно уверен, что с моим кодом все в порядке. 6. Я использую свой Mac на Yosemite, OSx 10.10.1 с XCode 6.1.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");
}
}
Примечание. Я создаю этот объект и играю его везде, где мне нужно в моем проекте. Когда я пытаюсь воспроизвести свои звуки, регистрируются «найден URL-адрес файла» и «Воспроизвести звуковой эффект».
Источник: Воспроизведение короткого звука в iOS