我正在iOS上構建一個VoIP應用程序,我正在使用AVAudioSessionCategoryPlayAndRecord
的AVAudioSession
類別,該類別建議用於需要不斷播放和錄製音頻的VoIP應用程序。如何防止我的iOS VoIP應用程序在用戶將手機切換爲靜音時播放音頻?
但是,當用戶將iPhone鈴聲切換到靜音模式時,VoIP應用程序仍會播放來電呼叫。這不是期望的行爲。
當用戶的手機靜音時,是否有辦法阻止來電播放音頻,但是仍然允許他們應答呼叫並恢復音頻?
我正在iOS上構建一個VoIP應用程序,我正在使用AVAudioSessionCategoryPlayAndRecord
的AVAudioSession
類別,該類別建議用於需要不斷播放和錄製音頻的VoIP應用程序。如何防止我的iOS VoIP應用程序在用戶將手機切換爲靜音時播放音頻?
但是,當用戶將iPhone鈴聲切換到靜音模式時,VoIP應用程序仍會播放來電呼叫。這不是期望的行爲。
當用戶的手機靜音時,是否有辦法阻止來電播放音頻,但是仍然允許他們應答呼叫並恢復音頻?
我想我找到了適用於VoIP應用程序的解決方案。如果手機設置爲靜音,我希望手機顯示警報並振動,而不是播放可聽響鈴。
我可以通過使用本地通知並將聲音移出應用程序並將其添加到通知本身來解決此問題。通過將聲音文件指定爲通知的一部分,iOS將處理是播放音頻還是振動手機。這取決於手機側面的Ring/Silent開關的位置。
Here's an Apple article on adding a sound to a local notification.
如果在文檔的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
。