如何为手表套件应用播放声音

根据我的理解,目前无法从手表上的手表套件应用程序播放声音。 如果是这种情况,播放声音的最佳方式是什么? 目前我正在使用openParentApplication:reply:在播放声音的手机上运行代码。 这是最好的方法吗?

更新:我还发现我可以使用与父应用程序相同的方法直接从手表扩展中播放音频。 不知道如果不在模拟器上这实际上会播放。

目前没有任何方法可以在手表上播放音频。 您的假设是100%正确的。 Apple不希望在运行时将音频剪辑从Watch Extension传输到Watch。 目前,唯一支持的传输缓存系统是用于图像 。 目前,您必须在iOS设备上播放音频。 您可以使用以下方法之一触发播放声音:

  • openParentApplication:reply: – 如果当前没有运行,则在后台打开应用程序
  • 达尔文通过像MMWormhole这样的东西发出通知

从Watch扩展中播放声音肯定是一个灰色区域。 我的猜测是它会在iOS设备上播放,或者在使用设备进行测试时根本不播放。 我当然会建议反对这种方法。 您的Watch Extension通常只会在非常短的时间内开放。 从iOS应用播放音频会更好,因为这可以保证继续运行。

从watchOS 2开始,您可以在手表上使用WKAudioFilePlayer播放音频文件。 似乎不支持mp3文件,但是caf和wav都是。 将声音文件复制到扩展目标。

建立:

 NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"file" withExtension:@"wav"]; WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:assetURL]; WKAudioFilePlayerItem *playerItem = [WKAudioFilePlayerItem playerItemWithAsset:asset]; WKAudioFilePlayer *audioFilePlayer = [WKAudioFilePlayer playerWithPlayerItem:playerItem]; 

玩:

 if (audioFilePlayer.status == WKAudioFilePlayerStatusReadyToPlay) { [self.audioFilePlayer play]; } 

或者,您可以使用WKInterfaceMovie类:

 [self presentMediaPlayerControllerWithURL:assetURL options:nil completion:nil];