背景和屏幕关闭时,请在守望套件锻炼应用中播放音频



我正在尝试构建一个守望套应用程序,该应用程序将在锻炼过程中提供音频反馈。音频是一系列简短的预录制语音剪辑。

  • 该应用开始锻炼会话
  • 音频剪辑在应用程序为活动
  • 时播放正常
  • 当应用在屏幕上时,音频也可以很好地播放(例如,通过点击数字冠或打开另一个应用程序)。

但是,当屏幕关闭时 - 例如通过启动锻炼然后降低手腕 - 音频直到应用再次处于活动状态才会播放。

即。

  1. 开始锻炼 在屏幕上保持应用程序=声音播放正常。
  2. 启动锻炼 通过敲击数字冠 保持屏幕=正常播放,将应用程序移至背景。
  3. 开始锻炼 下手腕=屏幕关闭并听起来不再播放。
  4. 开始锻炼 将应用程序移至背景 下手腕=屏幕关闭,声音不再播放。

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

  • 该应用具有一个活动HKWorkoutSession
  • 扩展程序在WKBackgroundModes
  • 下启用了"锻炼"背景模式
  • 扩展程序还具有UIBackgroundModes下启用的"音频"背景模式。
  • 扩展名具有HealthKit权利,所有HealthKit功能都在起作用。
  • 在iOS应用程序上,我添加了"音频"背景模式。

我尝试过:

  • 使用AVAudioPlayer
  • 播放音频剪辑
  • 使用AVAudioEngine AVAudioPlayerNode
  • 播放音频
  • 完全放弃剪辑并使用Avspeechsynthesizer

行为是相同的 - 屏幕关闭后,声音不再播放。如果该应用在后台,并且屏幕仍在打开。

,声音确实会播放。

该应用程序在手表操作系统4上运行。我已经在系列2和系列3手表上进行了测试。

我错过了什么?

ahhh,终于我找到了这篇文章,意识到我有同样的问题:

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

一旦我将会话类别更改为AvaudiosessionCategoryPlayBack,就可以使用!

在背景中播放音频时,您还需要将UibackgroundModes设置为扩展名PLIST中的"音频",除了设置"锻炼处理"背景模式。

折扣hkworkoutsession

要播放音频或提供背景的触觉反馈,还必须将UibackgroundModes密钥添加到WatchKit Extension的Info.plist文件中。该密钥的值是包含音频值的数组。

最新更新