我正在开发iOS(7& 8)VOIP应用程序(使用Kamailio服务器和PJSIP设备库)。
当应用程序处于前台时,一切正常,但问题是当应用程序处于后台时,套接字将保持活动状态仅5分钟(300秒)。
当我注册时:
[application setKeepAliveTimeout:600 handler: ^{
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
}];
我能接听电话。
问题是setKeepAliveTimeout
是10分钟,而套接字仅持续5分钟。
我已启用" App提供IP语音服务"在.plist
。我还将PJSUA_REG_INTERVAL
设置为600秒
请帮我在PJSIP中设置VIOP插座。
答案 0 :(得分:0)
您是否尝试将VoIP属性分配给Stream,如下所示
CFReadStreamSetProperty((__bridge_retained CFReadStreamRef)iStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
答案 1 :(得分:0)
一些互联网提供商的NAT在几分钟的沉默后关闭了非活动套接字。
可以使用以下代码激活PJSIP中套接字的内部保持活动消息:
pjsip_cfg()->tcp.keep_alive_interval = 90;
pjsip_cfg()->tls.keep_alive_interval = 90;
当然,你必须设置iOS keep-alive timer。