我有一个 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 应用程序没有播放音频?
在声音可以播放之前,您的“mySounds”就超出了范围。
让它成为一个实例变量,看看会发生什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)