【问题标题】:iOS override hardware volume buttons (Same as Zello)iOS 覆盖硬件音量按钮(与 Zello 相同)
【发布时间】:2022-01-06 16:34:50
【问题描述】:

我目前正在开发 PTT(一键通)应用程序。 我正在尝试使用硬件音量按钮来开始/停止传输。

到目前为止我看到的所有建议的解决方案都可以缩小到两个:

  1. 使用KVO观察AVAudioSession属性outputVolume。
  2. 使用私有 API 通知,即 AVSystemController_SystemVolumeDidChangeNotification 并且从 iOS 15.0 开始 - SystemVolumeDidChange。

没有深入了解每种解决方案的优缺点,它们都有一个共同点 - 它们都是基于数量的,这会引发几个问题。

  1. 按音量按钮可更改系统音量。虽然这可以通过重置系统音量来解决,但这并不是一个很好的解决方案。
  2. 无法区分来自硬件按钮的音量变化和来自命令中心的音量变化,因此按钮的使用仅限于应用程序处于前台并处于活动状态时。
  3. 当用户按下音量按钮时,在第一个音量变化事件和随后的连续事件之间会有短暂的延迟,这使得很难跟踪快速按下和释放。

我注意到 Zello 应用程序以某种方式设法克服了这些问题,因为即使在设备关闭或命令中心打开时,它们也可以使用音量按钮 - 不会对系统音量产生任何干扰。另外从指挥中心改变音量也没有效果。

有没有人知道如何实现这种行为?

【问题讨论】:

标签: ios volume


【解决方案1】:

我认为您正在尝试做的事情将导致应用商店在审核过程中被拒绝,因为 Apple 在 the App Store Review Guidelines paragraph 2.5.9 中提到了它

更改或禁用标准开关功能的应用程序(例如音量增大/减小和响铃/静音开关)或其他本机用户界面元素或行为将被拒绝。例如,应用程序不应阻止指向用户期望以某种方式工作的其他应用程序或其他功能的链接。了解有关正确处理的更多信息

【讨论】:

  • 有了 AppStore,我们可以稍后处理。我们可能有一些特殊情况可以让我们度过难关。我的问题来自技术 POV - 如何以及是否可以实现上述行为。
猜你喜欢
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
相关资源
最近更新 更多