在 Swift 中控制背景音乐 (macOS)
Control background music in Swift (macOS)
我正在开发一个基本上可以在后台播放一些声音的 macOS 应用程序。我遇到的唯一问题是当应用程序在后台运行时,音频从 App Delegate 播放以使其继续运行,但是我不知道如何停止或播放来自我的视图控制器的音频。在 AppDelegate.swift:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var audioURL = URL(fileURLWithPath: Bundle.main.path(forResource: "audio", ofType: "wav")!)
var audioPlayer = AVAudioPlayer()
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
func applicationDidFinishLaunching(_ aNotification: Notification) {
do {
audioPlayer = try AVAudioPlayer(contentsOf: audioURL)
audioPlayer.prepareToPlay()
audioPlayer.volume = 0.2
} catch {
print("Sorry, couldn't load the audio file")
}
}
我正在考虑使用委托,但我对 UI 和 C#/Swift 都是新手,所以我真的不知道如何实现它。
您的视图控制器可以通过
获取对应用委托的引用
if let appDelegate = NSApp.delegate as? AppDelegate {
// do something with appDelegate.audioPlayer
// ...
}
我正在开发一个基本上可以在后台播放一些声音的 macOS 应用程序。我遇到的唯一问题是当应用程序在后台运行时,音频从 App Delegate 播放以使其继续运行,但是我不知道如何停止或播放来自我的视图控制器的音频。在 AppDelegate.swift:
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var audioURL = URL(fileURLWithPath: Bundle.main.path(forResource: "audio", ofType: "wav")!)
var audioPlayer = AVAudioPlayer()
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
func applicationDidFinishLaunching(_ aNotification: Notification) {
do {
audioPlayer = try AVAudioPlayer(contentsOf: audioURL)
audioPlayer.prepareToPlay()
audioPlayer.volume = 0.2
} catch {
print("Sorry, couldn't load the audio file")
}
}
我正在考虑使用委托,但我对 UI 和 C#/Swift 都是新手,所以我真的不知道如何实现它。
您的视图控制器可以通过
获取对应用委托的引用if let appDelegate = NSApp.delegate as? AppDelegate {
// do something with appDelegate.audioPlayer
// ...
}