在背景和屏幕关闭时在 WatchKit 锻炼应用程序中播放音频

Playing audio in a WatchKit workout app when backgrounded and screen is off

我正在尝试构建一个 WatchKit 应用程序,它将在锻炼期间提供音频反馈。音频是一系列预先录制的简短语音片段。

但是,当屏幕关闭时 - 例如通过开始锻炼然后放下手腕 - 在应用程序再次激活之前不会播放音频。

  1. 开始锻炼 + 将应用程序保持在屏幕上 = 声音播放正常。
  2. 开始锻炼 + 轻按数码表冠将应用移至后台 + 保持屏幕开启 = 声音正常播放。
  3. 开始锻炼 + 下腕 = 屏幕关闭并且不再播放声音。
  4. 开始锻炼 + 将应用移至后台 + 放下手腕 = 屏幕关闭且不再播放声音。

我想弄清楚我错过了什么,以便在屏幕关闭时支持锻炼应用程序中的音频...

我试过:

行为相同 - 屏幕一关闭,就不再播放声音。如果应用程序在后台并且屏幕仍然打开,声音会播放。

该应用程序在 Watch 运行 上 OS 4. 我已经在 Series 2 和 Series 3 手表上进行了测试,两者都一样。

我错过了什么?

要在后台播放音频,除了设置 "workout processing" 后台模式外,您还需要在扩展 plist 中将 UIBackgroundModes 设置为 "audio"。

Refrence HKWorkoutSession

To play audio or provide haptic feedback from the background, you must also add the UIBackgroundModes key to your WatchKit extension’s Info.plist file. This key’s value is an array containing the audio value.

啊啊啊,终于找到了thispost,发现我也遇到了同样的问题:

AVAudioSession 类别需要设置为 AVAudioSessionCategoryPlayback(我将其设置为环境)。

一旦我将会话类别更改为 AVAudioSessionCategoryPlayback,它就起作用了!