是否可以在应用扩展中使用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的内容。

您必须要小心的一件事是在容器应用程序和扩展之间共享数据。你需要

10-07 14:33