我有一個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會話啓動時播放聲音。 –