2011-09-22 4 views
4

나는 앱이 백그라운드에있는 동안 "살아있는"소켓을 가지고있는 모든 요구 사항을 가지고 있다고 생각합니다. 즉 :응용 프로그램이 ios에 백그라운드로있는 동안 VoIP 전화 수신

  • 내 응용 프로그램에는 배경 모드로 voip 및 오디오가 있습니다.
  • "백그라운드에서 실행"속성이 활성화 된 상태에서 CFReadStreams를 사용하도록되어있는 SIP 라이브러리로 PJSIP을 사용하고 있습니다.
  • 응용 프로그램이 TCP를 사용하여 SIP 서버와의 연결을 설정하고 있습니다.

응용 프로그램을 백그라운드로 보내면 각 시간 동안 "keepAlive"메시지를 보내는 백그라운드 처리기가 추가됩니다.

keepAlive가 작동하는 것으로 보입니다. 서버의 로그를 확인하면 응용 프로그램이 포 그라운드가 아닌 경우에도 메시지 도착 방법을 볼 수 있습니다.

문제는 문제는 응용 프로그램이 백그라운드에있는 동안 전화를받지 못한다는 것입니다.

전적으로 소켓이 살아있는 것 같습니다. 앱이 포 그라운드에서는 no로 설정되어있는 동안 휴대 전화로 전화를 걸면 아무 일도 일어나지 않지만 앱을 직접 실행하면 통화가 자동으로 감지됩니다.

감사합니다 :)이

+1

동일한 문제를 가져오고 있습니다. 어떻게 해결 했습니까? 도와 줄수있으세요. – Salim

+0

들어오는 호출 알림 또는보기를 얻는 방법 ?? 제발 도와주세요! –

답변

4

문제가 발견되었습니다.

현재 구성에서 서버는 다른 연결을 사용하여 전화기에서 사용 된 초기 TCP 소켓에서 INVITE 요청을 전송하여 초기 REGISTER 요청을 보냅니다.

두 개의 소켓이 다르므로 운영 체제에서 응용 프로그램을 깨우지 않았습니다.

휴대 전화가 첫 번째 등록자를 보내는 데 사용한 초기 소켓을 재사용하도록 서버 (여기서는 Kamailio)를 구성하면 원활하게 작동합니다.

기본적으로 SIP 서버는 전화로 보내려는 각 INVITE 요청에 대해 새 소켓을 만듭니다. 이 상황은 아이폰 배경 모델에 문제가 있습니다.

관련 문제