我想在ios上使用pjsip在正在进行的通话期间处理ip更改表格wifi到4g并返回。
我已经按照pjsip网站的所有步骤进行了操作:https://trac.pjsip.org/repos/wiki/IPAddressChange这里我发现在发送pjsua_acc_set_registration(the_acc_id, PJ_FALSE);
后呼叫已断开连接。
另外,我不知道如何在第4点发送重新注册。
“最后,一旦在2b中取消注册)完成, 重新注册(使用TCP)。“
任何建议,建议,链接到我将解决问题的任何资源都很好。
答案 0 :(得分:1)
reference中描述了最简单可靠的方法:
最直接的解决方案当然是重启所有内容,这意味着以pjsua术语调用
pjsua_destroy()
,然后调用pjsua_create()
,pjsua_init()
,等等。
要检测4G / WiFi更改,您应该使用Apple Reachability
API,Tony Million的好包装AFNetworkReachabilityManager
和Reachability
。我在自己的项目中使用了这种方法,并且它完美无缺。
答案 1 :(得分:1)
从版本2.7开始,有第二种方法:
方法2:选择性更新
或者,可能有一种方法允许堆栈继续 运行,必要时更新地址信息。这种方法 将需要使用一些特定功能,以及一些 应用程序在检测到IP地址时的操作 改变。
具体配置和任务将在下面说明。请注意我们 假设SIP和媒体套接字绑定到INADDR_ANY (0.0.0.0)而不是特定的接口IP地址(这是 默认行为)。
更新2.7 或更高版本:应用程序可以应用此选择性更新 方法更简单,请查看机票#2041。
答案 2 :(得分:1)
为了获得Internet / IP更改,您可以使用Apple ReachabilityAPI或Tony的Reachability。在可达性更改观察器中,您可以比较以前的IP地址系列和当前的IP地址系列。
如果两者都来自同一家族,例如last和new属于同一IP家族IPV4或IPV6
如果两者都来自不同的家庭,例如最后一个属于IPV4,新的属于IPV6,反之亦然,请按照以下步骤使用。