2017-05-20 19 views
0

私は、VoIP通話のためのPJSIPを使用してiOSアプリケーションを設計しています、スピーカーボタンを押した後、スピーカーでもう一度することはできません。スピーカー/ VoIP通話中に、通常のマイクをプログラムのiOS 10迅速な私は、スピーカーに通話を開始し、ボタンを押すに私は通常で電話をかけることができています <p></p>

私はその機能を実現するために、次のコードを使用している: -

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)") 
      } 
     } 

答えて

0

イムわからないが、私はNSNotificationCenterを使用しながら、あなたのコードが動作すると思います。あなたのifステートメントの話し手のためのnotificaionとそのelseコードのための一つの通知を送る。 viewDidLoad上

if speaker == false { 
    NSNotificationCenter.defaultCenter().postNotificationName("speakerON", object: nil) 

} else { 
    NSNotificationCenter.defaultCenter().postNotificationName("speakerOFF", object: nil) 

} 

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"speakerON", object: nil) 

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.methodOfReceivedNotification(_:)), name:"speakerOFF", object: nil) 

あなたの機能:押しボタンアクションに

するvarスピーカー= falseを

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://stackoverflow.com/questions/24049020/nsnotificationcenter-addobserver-in-swift

関連する問題