我有一个WatchKit应用程序,当手表上的按钮被点击时,它会向iOS应用程序发出播放声音的信号。但是,当我使用自定义类来处理设置
以下是自定义类内容:
AVAudioPlayer
实例并播放声音时,声音不会播放。如果我在session:didReceiveMessage:replyHandler:
中执行该部分,则可以正常播放。以下是自定义类内容:
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应用程序没有播放音频?