Swift 4 / Xcode 9.2 - аудиоплеер - PullRequest
0 голосов
/ 20 мая 2019

Для воспроизведения аудио я прошел более крупный пост здесь.В результате получается лучшая версия, но:

        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)

не работает, что приводит к ошибке члена String при .playback.Вот полный код:

import Foundation
import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {


@IBAction func triggerSample(_ sender: Any) {
    playSound()
}

var player: AVAudioPlayer?

func playSound() {
    guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }

    do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
        try AVAudioSession.sharedInstance().setActive(true)

        /* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
        player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

        /* iOS 10 and earlier require the following line:
         player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */

        guard let player = player else { return }

        player.play()

    } catch let error {
        print(error.localizedDescription)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

ОБНОВЛЕНИЕ: Решение написано в закомментированных разделах выше: Для этого используйте следующий playSound () для Xcode 9.2:

func playSound() {
    guard let url = Bundle.main.url(forResource: "MWSTW_Bowie", withExtension: "mp3") else { return }

    do {
        player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
        guard let player = player else { return }
        player.play()

    } catch let error {
        print(error.localizedDescription)
    } //end of do/catch

} // end of playSound()

1 Ответ

0 голосов
/ 20 мая 2019

Это работает просто отлично.Просто убедитесь, что у вас есть MP3 в комплекте приложений с именем «soundName» типа .mp3

enter image description here

...