我遇到了一个间歇性(啊!)问题,从Apple Watch触发的Text-to-Speech在后台播放。 我已经正确设置了后台模式、AVSession类别和WatchKitExtensionRequest处理程序。(见下文。)我以前做过这个,但是想不出有什么变化。(可能是iOS 9有问题吗?“以前”指的是iOS 8等其他事情。)
这让我抓狂了。欢迎建议。
在info.plist中:
所需的后台模式:应用程序播放音频或使用AirPlay流式传输音频/视频
在AppDelegate.application:didFinishLaunching:withOptions()中:
do {
try AVAudioSession.sharedInstance().setCategory(
AVAudioSessionCategoryPlayback,
withOptions:.DuckOthers
)
try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
// etc...
}
在AppDelegate.application:handleWatchKitExtensionRequest...()函数中:
var bgTaskId:UIBackgroundTaskIdentifier = 0
bgTaskId = application.beginBackgroundTaskWithName(
"Prose WKE handler",
expirationHandler: {
application.endBackgroundTask(bgTaskId)
}
)
//... Post notification to call Text-to-Speech
application.endBackgroundTask(bgTaskId)