我有一个WatchKit应用程序,当手表上的按钮被点击时,它会通知iOS应用程序播放声音。出于某种原因,当我使用自定义类来处理设置AVAudioPlayer
的实例并播放声音时,声音不会播放。如果我在session:didReceiveMessage:replyHandler:
之内做到这一点,它会很好。AVAudioPlayer不播放声音
这是自定义类:
import AVFoundation
class ChildClass {
let mySound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("test", ofType: "wav")!)
var audioPlayer: AVAudioPlayer!
func playSound() {
do {
print("Playing sound")
self.audioPlayer = try AVAudioPlayer(contentsOfURL: mySound)
self.audioPlayer.play()
} catch {
print("Error getting audio file")
}
}
}
这是实例化我的ViewController:
class ViewController: UIViewController, WCSessionDelegate {
var session: WCSession!
override func viewDidLoad() {
super.viewDidLoad()
if WCSession.isSupported() {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
let mySounds = ChildClass()
mySounds.playSound()
}
}
设置在ChildClass.playSound()
断点我可以确认它获取调用。但不仅声音不起作用,而且print()
也不会向控制台输出任何内容。
有没有关于AVAudioPlayer
实例在自定义类中导致它不播放声音的内容?或者,由于某种原因,iOS应用可能没有播放音频?
奇怪。这对我也不起作用。但是如果这样做的话,看起来像是一个问题,那就是当WatchKit发送消息时它不一定会触发播放声音,而是在WatchKit会话启动时播放声音。 –