iOS voip应用程序在5分钟后无法在后台模式下响应

时间:2015-05-05 07:57:06

标签: ios sockets voip pjsip kamailio

我正在开发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插座。

2 个答案:

答案 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。