1

是否可以在应用扩展中使用 AVSpeechSynthesizer?

我已经向我的应用程序添加了一个应用程序操作扩展,并且在显示的默认控制器上,我在- (void)viewDidAppear:(BOOL)animated挂钩中添加了一些测试代码,看看我是否可以让语音合成器说 @"Hello World" 但是它似乎没有发出任何声音。

然后我尝试将合成器的委托设置为控制器,一切似乎都正常。

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance

被调用。几秒钟后

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance

这似乎表明一切正常,但没有声音输出(我的音量调高了)。

我尝试将相同的代码片段添加到我的应用程序(包含应用程序)中,它会按预期说出文本。

我了解某些框架不适用于应用程序扩展,如文档中所述。但是 AVFoundation 似乎没有说明它不适用于应用程序扩展。

任何见解将不胜感激。

提前致谢!

AVSpeechSynthesizer *s = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *u = [[AVSpeechUtterance alloc] initWithString:@"Hello World!"];
[s speakUtterance:u];
4

1 回答 1

1

是的,它确实。我有一个与 safari 配合使用的操作扩展程序,并使用 AVSpeechSynthesizer 说出网站的内容,奇怪的是,当我尝试时,我什至没有为应用程序启用背景音频。扩展已成功激活并开始读取 DOM 的内容。

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

于 2015-02-16T04:00:36.320 回答