ios - AVSpeechSynthesizer 在应用程序扩展中工作吗?

标签 ios objective-c avfoundation ios-app-extension avspeechsynthesizer

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

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

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

- (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];

最佳答案

是的。我有一个与 safari 一起使用的 Action 扩展,并使用 AVSpeechSynthesizer 说出网站的内容,奇怪的是我在尝试时甚至没有为应用程序启用背景音频。扩展已成功激活并开始读取 DOM 的内容。

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

关于ios - AVSpeechSynthesizer 在应用程序扩展中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208209/

相关文章:

objective-c - 创建用于写入的空文件?

c++ - 从后台线程错误修改自动布局引擎,来自 C++

c# - iOS 视频录制时长更新 UI

ios - iPhone相机无法设置长时间曝光

ios - 如何将自动对焦添加到 AVCaptureSession? swift

ios - 在后台或通知进程中使用加密 Realm ?

ios - 在iOS中显示带有百分比的UIProgressView

ios - 一些 Restkit 方法不可用

ios - CAShapeLayer 描边看起来已重置

ios - 单元测试策略,理想的代码覆盖基线