2016-12-10 5 views
1

Мне нравится играть звук в моем приложении. Я нашел множество примеров, а также мог компилировать и запускать их на Swift 3. Но они всегда для iOS. При сопоставлении этого кода в моем приложении AVAudioSession остается неопределенным. Что мне нужно сделать? Что-то другое для OSX?играет звук на OSX

import AVFoundation 
... 
    var audioPlayer = AVAudioPlayer() 
    func PlaySound() { 
     let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: "Sound", ofType: "mp3")!) 
     do { 
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     } catch _ { 
     } 
     do { 
      try AVAudioSession.sharedInstance().setActive(true) 
     } catch _ { 
     } 
     do { 
      audioPlayer = try AVAudioPlayer(contentsOf: alertSound) 
     } catch _{ 
     } 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
    } 

ответ

3

Я использовал следующую функцию в сочетании с Swift 3 и проектом Cocoa.

import AVFoundation 

func playSound(file:String, ext:String) -> Void { 
    let url = Bundle.main.url(forResource: file, withExtension: ext)! 
    do { 
     player = try AVAudioPlayer(contentsOf: url) 
     guard let player = player else { return } 

     player.prepareToPlay() 
     player.play() 
    } catch let error { 
     print(error.localizedDescription) 
    } 
} 

// использование //

playSound(file: "sound", ext: "caf") // where the file name is sound.caf. 

Убедитесь, что членство в целевой флажок, когда вы выбираете звуковой файл в Xcode проекте.

+0

Отлично. Это сработало мгновенно! Большое спасибо! –

+3

Использование нерешенного идентификатора 'игрока' –

+0

@David Jones Взгляните на первую строчку. –

0

Swift 3 - простое решение:

NSSound(named: "customSound")?.play() 
+0

Эта тема не имеет ничего общего с NSSound. –

+0

@ ElTomato Нет? 'Класс NSSound предоставляет простой интерфейс для загрузки и воспроизведения аудиофайлов' https://developer.apple.com/reference/appkit/nssound – ixany

+0

Прочитайте оригинальную тему. Лицо, отправляющее эту тему, относится к AVAudioSession, а не к NSSound. –

Смежные вопросы