Mep*_*pla 3 voip objective-c pjsip ios
我正在使用PJSIP(在PJSUA的帮助下)在我的应用程序中实现一些VoIP功能.当我的应用程序中的VoIP呼叫正在进行中时,我可以轻松地保持呼叫,然后完全没有问题,一切都很好.我已经使用CoreTelephony来识别一个传入的蜂窝(正常)呼叫,当一个呼叫到来时,我保持我的VoIP呼叫 applicationWillResignActive
,当它结束时,我不知道(重新发起)我的VoIP呼叫applicationDidBecomeActive
.一切似乎工作正常(因为我几乎到处都有日志)但是从蜂窝电话回来后我的电话不再有任何媒体传输,所以电话正在进行,但我听不到任何声音.30秒后我断开连接(我配置了30秒超时,因为我的服务器上没有媒体,这里会调用它.).我真的很感激任何可能的信息或者我可能缺少的东西.谢谢大家.
小智 7
作为这个维基:
http://trac.pjsip.org/repos/wiki/Getting-Started/iPhone?format=pdf
pjsip解释说,iOS7以后pjsua正在使用AVAudioSession的高级API来管理声音流的打开和关闭,这不允许在GSM呼叫(或任何其他声音)中断之后(自动)重新连接媒体流的旧方法.为了使其工作,您需要执行以下操作:
您的应用程序应配置为接收中断事件,如果您使用声音或VOIP作为UIBackgroundModes,则已经是这种情况.如果没有,请使用以下内容接收中断:
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
在中断开始时强制关闭声音设备.使用pjsua_set_no_snd_dev()
了pjsua,或AudDevManager.setNoDev()
用于pjsua2
中断结束时将AVAudioSession设置为活动状态,然后使用pjsua_set_snd_dev()
for pjsua或AudDevManager.setPlaybackDev()+setCaptureDev()
pjsua2 重新启动声音设备
可以使用该方法提取发送到pjsua_set_snd_dev()所需的参数pjsua_get_snd_dev()
.
这里要记住的一件事是,一旦你强行关闭设备它就不会自动启动(即使新的呼叫开始),除非你再次调用pjsua_set_snd_dev()重新启动它
归档时间: |
|
查看次数: |
2634 次 |
最近记录: |