我正在使用PJSIP客户端来处理VOIP呼叫。当前我有两个服务器设置。
1-test1.myvoipserver.com(仅支持IPv4)
2-test2.myvoipserver.com(仅支持IPv6)
在客户端,我要检查用户IP是否属于IPv4家庭,而不是从支持的test1.myvoipserver.com服务器路由呼叫IPv4。
如果用户IP属于IPv6家庭,我正在路由仅来自支持的test2.myvoipserver.com的呼叫IPv6。
除以下情况外,所有通话均工作正常。
场景:
假设用户有两个可用的Internet连接。
4G-(仅在IPv6上)
Wifi-(仅在IPv4上)
用户在4G上进行了通话,通话被乙方接受,并且媒体数据包可以正常传输。在通话期间,用户已开始移动到可以使用Wifi的位置,他的移动互联网会自动切换到Wifi。那时媒体包将丢失,这是可以理解的。我想断开当前通话,并在IPv4Wifi开启时再次与服务器进行新通话IPv4。
**实际结果**:在Internet从更改为时IPv6,IPv4我强制断开当前通话,但通话并未立即在甲方和乙方断开,因此2分钟后可能会断开(可能是pjsip /服务器发送超时)。
预期结果:甲方和乙方应立即断开通话
我的理解:因为我当前的呼叫在IPv6服务器上,但是我的设备属于新IP,IPv4并且我的当前呼叫服务器不支持IPv4地址,所以这就是为什么从客户端发送再见时,服务器未发送OK / ACK的原因。
注意:PSTN呼叫时会遇到此问题。
在iOS CNContactViewController- >中Add New Contact screen,当用户开始在任何字段中键入文本时,例如(名字,姓氏或公司等)取消按钮会在文本更改后不断闪烁.
我不想要取消按钮的闪光/轻弹动画.任何帮助将不胜感激.
实际结果:取消按钮在文本更改时闪烁/轻弹.
预期结果:闪烁/轻弹不应该在那里.
我已经实现了 PJSIP 客户端来处理 VOIP 呼叫。
在通话期间,如果网络发生变化,我将发送重新邀请,例如:
unsigned int count = 1;
pjsua_call_id call_id = PJSUA_INVALID_ID;
pjsua_enum_calls(&call_id, &count);
pjsua_call_reinvite(call_id,PJSUA_CALL_UPDATE_CONTACT, NULL);
Run Code Online (Sandbox Code Playgroud)
问题:发送重新邀请后,我可以看到 INVITE 数据包包含旧的联系人标头值,如果 B 方断开呼叫 SIP 服务器发送购买旧的联系人地址。
解决方案:发送重新邀请后应更新联系人标题值,以便 SIP 服务器可以在最新地址上发送再见。