我正在使用SwiftUI为iOS和MacOS编写应用程序。
我的电台播放器在iOS的后台模式下需要此代码
private func checkSession() {
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay])
print("Playback OK")
try AVAudioSession.sharedInstance().setActive(true)
print("Session is Active")
} catch {
print(error)
}
}
不幸的是,当我尝试针对MacOS进行构建时,出现以下错误:
AVAudioSession'在macOS中不可用'setActive'在Swift sharedInstance()中不可用'在macOS中不可用
保留我的iOS构建代码并在MacOS中获得工作代码的最佳方法是什么?
您可以使用以下代码有条件地注释掉代码:
#if os(macOS)
#endif
要么
#if os(iOS)
#endif
您还可以将代码拆分为仅对Xcode中的iOS或macOS目标可用的文件。
这对于扩展尤其有用。例如,您可能会遇到以下情况:
extension MyAudioManager {
func setup() {
//do iOS setup
}
}
以及适用于macOS的等效版本。然后,您可以.setup()
从共享文件中调用,并且该方法在任一平台上仍然可用。
使用条件编译的策略可能看起来像这样:
extension MyAudioManager {
#if os(iOS)
func setup() {
//do iOS setup
}
}
#endif
#if os(macOS)
func setup() {
//do macOS setup
}
}
#endif
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句