2017-04-30 3 views
1

Ich brauche eine MP3-Datei wiederzugeben, und ich bin mit diesem Code:AVAudioPlayer spielt nicht die MP3

import AVFoundation 

var player: AVAudioPlayer? 

@IBAction func playSound(sender: UIButton) { 

    //Making the phone vibrate 
    AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate)) 

    //Playing a sound 
    let url = Bundle.main.url(forResource: "audio_file_name", withExtension: "mp3")! 
    do { 
     self.player = try AVAudioPlayer(contentsOf: url) 
     self.player?.delegate = self 
     self.player?.prepareToPlay() 
     self.player?.play() 
    } catch let error { 
     print(error.localizedDescription) 
    } 
} 

ich keine Fehler bekommen, aber kein Ton wiedergegeben wird. Ich habe auch Inter-App-Audio in den App-Funktionen aktiviert, die MP3-Datei in "Copy Bundle Resources" hinzugefügt und teste es auf einem echten Gerät. Irgendwelche Vorschläge? Ich habe alle anderen Lösungen in anderen Fragen dieser Art zur Verfügung gestellt versucht ...

Antwort

0

ich gelöst habe.

Alles funktionierte nicht, nur weil ich diesen Code in einer Hintergrundwarteschlange reproduzierte. Das Verschieben in die Hauptwarteschlange hat das Problem gelöst.

-1

dieses Stück Code für mich funktionierte gut

func playAudio(){ 
    let audioUrl = URL(fileURLWithPath: value, relativeTo: someBasePath) 
      do{ 
       try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
       try AVAudioSession.sharedInstance().setActive(true) 
       audioPlayer = try AVAudioPlayer(contentsOf: audioUrl, fileTypeHint: AVFileTypeMPEGLayer3) 
       audioPlayer.prepareToPlay() 
       audioPlayer.play() 
      }catch{ 
       print(error.localizedDescription) 
      } 
} 

und Sie haben audioPlayer als Klassenmitglied zu definieren oder es geht außerhalb des Geltungsbereiches sonst und es wird nicht funktionieren.

var audioPlayer: AVAudioPlayer! 

das ist es

+0

Ich verstehe nur nicht die -1? für ein funktionierendes Stück Code? was beantwortet die Frage. –