当用户将手机切换为静音时,如何防止我的 iOS VoIP 应用播放音频?

Posted

技术标签:

【中文标题】当用户将手机切换为静音时,如何防止我的 iOS VoIP 应用播放音频?【英文标题】:How can I prevent my iOS VoIP app from playing audio when the user switches their phone to silent? 【发布时间】:2015-01-09 19:46:41 【问题描述】:

我正在 ios 上构建一个 VoIP 应用,我正在使用 AVAudioSessionCategoryPlayAndRecordAVAudioSession 类别,推荐用于需要不断播放和录制音频的 VoIP 应用。

但是,当用户将 iPhone 铃声切换到静音模式时,VoIP 应用程序仍会为来电播放声音。这不是我们想要的行为。

有没有办法在用户将手机静音时阻止来电播放音频,但仍允许他们接听电话并恢复音频?

【问题讨论】:

【参考方案1】:

如果您在此处查看AVAudioSession Categories 的文档,您会发现AVAudioSessionCategoryPlayAndRecord 很遗憾不服从电话静音,如下所示:

Your audio continues with the Silent switch set to silent and with the screen locked. (The switch is called the Ring/Silent switch on iPhone.) 

如果您希望在手机静音时停止音频,您应该使用AVAudioSessionCategoryAmbient

【讨论】:

【参考方案2】:

我想我找到了适用于 VoIP 应用程序的解决方案。如果手机设置为静音,我希望手机显示警报和振动,而不是播放铃声。

我可以通过使用本地通知并将声音移出应用程序并将其添加到通知本身来解决此问题。通过将声音文件指定为通知的一部分,iOS 将处理是否应该播放音频或振动手机。这取决于手机侧面响铃/静音开关的位置。

Here's an Apple article on adding a sound to a local notification.

【讨论】:

以上是关于当用户将手机切换为静音时,如何防止我的 iOS VoIP 应用播放音频?的主要内容,如果未能解决你的问题,请参考以下文章

当铃声静音时,如何防止我的应用程序(使用 AVPlayer)静音?

切换按钮静音(快速)

在靠近特定位置时使手机静音

忽略手机静音模式

react-native-youtube 当手机处于静音模式时没有视频声音

当用户触摸警报时,如何防止我的 SDCAlertview 关闭?