Симулятор iOS не воспроизводит звуковые эффекты

Я знаю, что этот вопрос задавали 999 раз. Во всех ответах говорится, что нужно перейти в Системные настройки > Звук > Звуковые эффекты и убедиться, что установлен флажок "Воспроизвести звуковые эффекты пользовательского интерфейса", или чтобы снять флажок и перепроверить его.

Это не работает для меня. Я проверил, но звуковые эффекты все еще не воспроизводятся.

Еще немного информации:

  1. Я пытаюсь использовать SystemSoundID для воспроизведения звуковых эффектов.
  2. Ранее я использовал AVAudioPlayer для звуковых эффектов, и это сработало.
  3. Зашел на YouTube из Safari в симуляторе и звук видео заиграл.
  4. Я связал AudioToolbox.framework со своим проектом.
  5. Я скачал пример кода 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


person aanrv    schedule 29.01.2015    source источник
comment
Я не хочу спрашивать очевидное, но воспроизводит ли ваш компьютер другие звуки?   -  person Ian MacDonald    schedule 29.01.2015
comment
Вы пробовали с другим звуковым файлом? ты звонишь   -  person RyanTCB    schedule 29.01.2015
comment
@RyanForsyth Да, я пробовал с несколькими звуковыми файлами.   -  person aanrv    schedule 29.01.2015
comment
воспроизводит ли звуковой файл звук при открытии в Xcode?   -  person RyanTCB    schedule 29.01.2015
comment
В каком формате аудиофайл? и вы пытались сбросить симулятор, чтобы посмотреть, поможет ли это?   -  person RyanTCB    schedule 29.01.2015
comment
mp3, и да у меня есть.   -  person aanrv    schedule 29.01.2015
comment
добавили AudioToolbox.framework для этапов сборки? Это все, что у меня осталось, извините, все остальное говорит, что это должно работать   -  person RyanTCB    schedule 29.01.2015


Ответы (1)


    SystemSoundID customSound;

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

Это работает на моем

person RyanTCB    schedule 29.01.2015