是否可以在应用扩展中使用AVSpeechSynthesizer?
我已经在我的应用程序中添加了一个应用程序应用程序动作扩展,并且在显示的默认控制器上,我在- (void)viewDidAppear:(BOOL)animated
挂钩中添加了一些测试代码,以查看是否可以让语音合成器说出@“Hello World”。它似乎没有发出任何声音。
然后,我尝试将合成器的委托设置为控制器,并且一切似乎都正常工作。- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance
被叫。几秒钟后- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance
这似乎表明一切正常,但是没有声音输出(我的音量调高了)。
我尝试将相同的代码段添加到我的应用程序(包含应用程序)中,并且它按预期方式显示文本。
我了解documentation中所述的某些框架不适用于应用程序扩展。但是,AVFoundation似乎并没有声明它不能用于应用程序扩展。
任何见解将不胜感激。
提前致谢!
AVSpeechSynthesizer *s = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *u = [[AVSpeechUtterance alloc] initWithString:@"Hello World!"];
[s speakUtterance:u];
最佳答案
是的,它确实。我有一个动作扩展程序,可以与野生动物园配合使用,并使用AVSpeechSynthesizer讲网站的内容,奇怪的是,当我尝试时甚至没有为应用程序启用背景音频。该扩展已成功激活,并开始读取DOM的内容。
您必须要小心的一件事是在容器应用程序和扩展之间共享数据。你需要