我正在开发一个iOS (7 & 8) VOIP应用程序(通过使用Kamailio服务器和PJSIP设备库)。
当应用程序处于前台时,一切都可以正常工作,但问题是当应用程序处于后台时,套接字将仅存活5分钟(300秒)。
当我在下列机构登记时:
[application setKeepAliveTimeout:600 handler: ^{
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
}];我能接到电话。
问题是setKeepAliveTimeout是10分钟,套接字只持续5分钟。
我在.plist中启用了“应用程序提供IP语音服务”。我还将PJSUA_REG_INTERVAL设置为600秒。
请帮我设置PJSIP中的VIOP套接字。
发布于 2015-05-18 22:43:46
您是否尝试将VoIP属性分配给流,如下所示,
CFReadStreamSetProperty((__bridge_retained CFReadStreamRef)iStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);发布于 2016-03-04 07:10:54
一些互联网提供商的NAT在沉默了几分钟后关闭了不活动的套接字。
可以使用以下代码为PJSIP中的套接字激活内部保持活动消息:
pjsip_cfg()->tcp.keep_alive_interval = 90;
pjsip_cfg()->tls.keep_alive_interval = 90;当然,你必须设置iOS保持活着的计时器。
https://stackoverflow.com/questions/30047207
复制相似问题