4

我正在开发一个 iOS (7 & 8) VOIP 应用程序(通过使用 Kamailio 服务器和 PJSIP 设备库)。

当应用程序在前台时一切正常,但问题是当应用程序在后台时,套接字将保持活动状态仅 5 分钟(300 秒)。
当我注册时:

[application setKeepAliveTimeout:600 handler: ^{
        [self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
    }];

我能够接听电话。

问题是setKeepAliveTimeout10 分钟,套接字仅持续 5 分钟。

我启用了“应用程序提供 IP 语音服务.plist。我也设置PJSUA_REG_INTERVAL为600秒。
请帮我在 PJSIP 中设置 VIOP 套接字。

4

2 回答 2

0

您是否尝试将 VoIP 属性分配给 Stream,如下所示,

CFReadStreamSetProperty((__bridge_retained CFReadStreamRef)iStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
于 2015-05-18T22:43:46.010 回答
0

一些 Internet 提供商的 NAT 会在几分钟的静默后关闭不活动的套接字。

可以使用以下代码为 PJSIP 中的套接字激活内部保持活动消息:

pjsip_cfg()->tcp.keep_alive_interval = 90;
pjsip_cfg()->tls.keep_alive_interval = 90;

当然,您必须设置 iOS 保持活动计时器。

于 2016-03-04T07:10:54.707 回答