2011-11-29 5 views
0

일부 Sip 호출을 위해 pjsip을 기반으로하는 앱이 있습니다.FreeSwitch iPhone 앱 통신 문제

앱은 다른 SIP 스위치/서버와 잘 작동하지만 freeSwitch를 사용하면 앱이 백그라운드 모드에서 전화를받지 못합니다.

freeSwitch를 사용하면 앱이 활성화되어있을 때 모든 것이 잘되지만 백그라운드 모드에서는 앱에 통화에 대한 알림이 표시되지 않습니다. FreeSwitch가 새로운 호출에 대해 앱에 알리는 방법과 관련이있을 것입니다 (iOS pjsip의 경우 알림은 TCP 래핑 된 소켓에 있어야합니다).

복용량 누군가가 특정 포트에서 알림을 보내려면 fresSwitch를 어떻게 구성 할 수 있는지 알고 있습니까?

+0

귀하의 앱이 FreeSWITCH에 등록되어 있습니까? 등록이 시간 초과되어 FreeSWITCH가 앱 종점이 어디인지 알 수 없다는 사실이 있습니다. FreeSWITCH에서 디버그 7은 무엇을 보여줍니까? 이후의 기능에 대해 더 자세히 설명해 주시겠습니까? –

+0

앱을 등록하면 백그라운드에서 앱을 여는 경우 전화 알림이 표시되기 때문에 앱이 등록됩니다. – alinoz

답변

0

내가 추가하여이 문제를 해결하기 위해 옴 :

<variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/> 

freeswitch_install_folder/conf의/디렉토리/기본적으로/변수에 따라 (XYZ가 구성중인 사용자입니다) XYZ.xml.

0

Freeswitch가있는 iOS에 ndlb-connectile-dysfunction (ndlb)을 사용하고 싶지 않습니다. 이렇게하면 Freeeswitch는 해당 옵션이 설정 될 때 Freeswitch가 모든 등록에 "expires = 30"을 추가하기 때문에 백그라운드에서 유용 할 수 있도록 등록을 길게 열 수 없음을 보장합니다. 그 후 등록 호출 후 30 초 이내에 발생하지 않는 한 해당 사용자에게 전화를 걸 때 "USER_NOT_REGISTERED"오류가 발생합니다. 특히 http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW12

: 핸들러와 핸들러 :) :

1) 아이폰 OS 연결 유지 타이머 (setKeepAliveTimeout를 실행되어 있는지 확인하십시오 당신이해야 할 일은

여기 단계를 수행하다 최소값 (600 초)에서 재 등록을 차단합니다.

2) 앱이 VOIP 와의 오디오 재생 배경 모드에 맞게 구성되어 있는지 확인 자사의 Info.plist

3) 그 애플에서 언급 한 바와 같이 클라이언트가 VOIP 사용에 대한 네트워크 스트림 인터페이스 등록되어 있는지 확인 지침. 그렇게하면 OS가 앱을 잠자기 상태로 설정할 수 있지만 수신 트래픽이 해당 네트워크 스트림에서 발생하면 사용자를 깨울 수 있습니다.

세 가지 모두를 수행하면 화면이 잠겨 있어도 iOS 5의 백그라운드에서 음성을 실행할 수 있습니다.

+0

당신과 응용 프로그램에서 언급 한 모든 단계가 다른 SIP 서버에서 제대로 실행되고 있었지만 FreeSwitch 서버에서 백그라운드 모드로 작동하지 않았습니다. 문제는 iOS 측에서 발생하지 않았습니다. – alinoz

+0

SIP 등록에 TCP를 사용하고 있습니까? 백그라운드 모드에서 iOS 5와 함께 FreeSwitch를 사용하는 데 문제가 없습니다. 어쨌든 사용자는 NDLB 설정에서 멀리 떨어져 있어야합니다. –

+0

분명히하기 위해 NDLB 설정을 사용하면 거의 작동하지 않으며 iOS와 관련이 없습니다. 등록이 만료되었으므로 서버가 전화로 아무 것도 보내지 않기 때문입니다. 등록 후 초. Freeswitch에서 더 나은 디버깅 정보를 얻으려면, 다음과 같이 시작해야합니다 :'> TPORT_LOG = 1./ freeswitch' - 서버가 (서버 로그에서 볼 수있는) 호출을 보내고 있는지 확인하고, OS가 그것을 받기 위해 앱을 깨우는 것입니다 (콜백에서 로그를 기록하는 것입니다). –