Звук с помощью UIAlert / UIAlertController - PullRequest
0 голосов
/ 10 января 2019

Привет, мне интересно, можно ли воспроизвести звук с помощью UIAlert? Кажется, это возможно в соответствии со следующим постом, но я изо всех сил пытаюсь перевести Obj-C на Swift. Любая помощь приветствуется!

Предупреждение IOS со звуком

1 Ответ

0 голосов
/ 10 января 2019

Вот способ, которым вы можете достичь этого в кратчайшие сроки.

Прежде всего вам нужно выполнить это действие в viewWillAppear, если вы следуете сообщению, которое вы включили в свой вопрос.

Затем создайте audioPlayer, который будет воспроизводить ваш звук, как показано ниже:

var audioPlayer: AVAudioPlayer?

затем присвойте URL из Bundle

let resourcePath = Bundle.main.resourcePath
let stringURL = resourcePath! + "foo.mp3"
let url = URL.init(fileURLWithPath: stringURL)

Затем воспроизведите его до того, как появится ваше предупреждение:

audioPlayer?.play()

Теперь создайте свое оповещение как:

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: { action in
    self.audioPlayer?.stop()
 }))

 audioPlayer?.play()
 self.present(alert, animated: true, completion: nil)

И ваш полный код будет:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var audioPlayer: AVAudioPlayer?

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {

        let resourcePath = Bundle.main.resourcePath
        let stringURL = resourcePath! + "foo.mp3" //change foo to your file name you have added in project
        let url = URL.init(fileURLWithPath: stringURL)

        audioPlayer = try? AVAudioPlayer.init(contentsOf: url)
        audioPlayer?.numberOfLoops = 1

        let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
        alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: { action in
            self.audioPlayer?.stop()
        }))

        audioPlayer?.play()
        self.present(alert, animated: true, completion: nil)
    }
}
...