Динамик / обычный микрофон во время VOIP звонка программно iOS 10 swift
Я разрабатываю приложение для iOS, используя PJSIP для VOIP Calling,
Я запускаю вызов на динамике и при нажатии кнопки я могу сделать вызов на обычном микрофоне, но я не могу сделать его снова на динамике после нажатия кнопки динамика.
Я использовал следующий код для достижения этой функциональности:
if sender.titleLabel?.text == "Speaker"{
do {
try audioSession.overrideOutputAudioPort(.none)
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setMode(AVAudioSessionModeVoiceChat)
try audioSession.setActive(true)
} catch {
print("AVAudioSession cannot be set: \(error)")
}
}else{
do {
try audioSession.overrideOutputAudioPort(.speaker)
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setMode(AVAudioSessionModeVoiceChat)
try audioSession.setActive(true)
} catch {
print("AVAudioSession cannot be set: \(error)")
}
}
1 ответ
Я не уверен, но я думаю, что ваш код будет работать при использовании NSNotificationCenter. Отправьте уведомление для докладчика в своем заявлении if и одно уведомление для этого кода.
var speaker = false
при нажатии кнопки действие:
if speaker == false {
NSNotificationCenter.defaultCenter().postNotificationName("speakerON", object: nil)
} else {
NSNotificationCenter.defaultCenter().postNotificationName("speakerOFF", object: nil)
}
на viewDidLoad:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"speakerON", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"speakerOFF", object: nil)
ваши функции:
func speakerON() {
try audioSession.overrideOutputAudioPort(.none)
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setMode(AVAudioSessionModeVoiceChat)
try audioSession.setActive(true)
}
func speakerOFF() {
try audioSession.overrideOutputAudioPort(.speaker)
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioSession.setMode(AVAudioSessionModeVoiceChat)
try audioSession.setActive(true)
}
Пожалуйста, перейдите по этой ссылке, если вы хотите узнать больше о NSNotificationCenter:
https://stackru.com/questions/24049020/nsnotificationcenter-addobserver-in-swift