【问题标题】:iOS voip app not responding in background mode after 5 minuteiOS voip 应用程序在 5 分钟后在后台模式下没有响应
【发布时间】:2015-07-14 20:19:24
【问题描述】:

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

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

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

我可以接听电话。

问题是setKeepAliveTimeout 是 10 分钟,而套接字仅持续 5 分钟。

我在.plist 中启用了“App 提供 IP 语音服务”。我还将PJSUA_REG_INTERVAL 设置为 600 秒。
请帮我在 PJSIP 中设置 VIOP 套接字。

【问题讨论】:

  • 点击我认为你会得到答案的链接。 stackoverflow.com/questions/28028682/…
  • 我已经这样做了,但没有运气。
  • 我如何在 PJSIP 中使用 CFReadStreamRef?
  • 我收到错误:收到 50 个连续错误:accept() 操作的 120035,停止进一步的 ioqueue 接受。

标签: ios sockets voip pjsip kamailio


【解决方案1】:

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

CFReadStreamSetProperty((__bridge_retained CFReadStreamRef)iStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

【讨论】:

  • 根据文件 PJSIP 在内部这样做。如果我没记错,请纠正我。
  • 我正在使用 pjsua_acc_set_registration,用于重新注册,它也很有趣,有时它在应用程序处于后台时给出 408,503 错误。
  • 对不起,我不知道 PJSIP。
  • 感谢您的回答,PJSIP 内部正在这样做。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多