Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setKeepAliveTimeout iOS行为在300秒内超过15次唤醒_Ios_Sockets_Voip_Keep Alive - Fatal编程技术网

setKeepAliveTimeout iOS行为在300秒内超过15次唤醒

setKeepAliveTimeout iOS行为在300秒内超过15次唤醒,ios,sockets,voip,keep-alive,Ios,Sockets,Voip,Keep Alive,我正在iOS 5上编写一个VOIP应用程序,我试图了解如何在后台保持实际的通信 据我所知,插座在每段时间内可获得的唤醒次数最多。 我的问题是,我的套接字连接接收太多唤醒消息,因为应用程序终止时会显示崩溃消息: 300秒内超过15次唤醒 我真正不明白的是,如果每个时间段可以接收的数据量有限制,那么套接字如何能够通过它不断地发送和接收数据(用于VOIP需求) 假设套接字正在接收在后台进行的语音对话的语音数据。语音数据不是应该通过套接字连接吗?如果是这样的话,如果套接字在每段时间内的活动有限制,它如何

我正在iOS 5上编写一个VOIP应用程序,我试图了解如何在后台保持实际的通信

据我所知,插座在每段时间内可获得的唤醒次数最多。 我的问题是,我的套接字连接接收太多唤醒消息,因为应用程序终止时会显示崩溃消息:

300秒内超过15次唤醒

我真正不明白的是,如果每个时间段可以接收的数据量有限制,那么套接字如何能够通过它不断地发送和接收数据(用于VOIP需求)


假设套接字正在接收在后台进行的语音对话的语音数据。语音数据不是应该通过套接字连接吗?如果是这样的话,如果套接字在每段时间内的活动有限制,它如何工作?

您使用的是什么版本的IOS设备


这是苹果在IOS5中引入的一个已知的“功能”/问题,用于减少Voip应用程序的电池使用…

Voip应用程序在后台的行为(iOS 4.0+):
  • 有一个保持打开状态的插座,标记为Voip
  • 此VOIP套接字由系统维护,而应用程序在BG挂起
  • 你可以安排一个keep alive块,操作系统会每X次唤醒你的应用程序
  • X>=10分钟(请参见[[UIApplication sharedApplication]setKeepAliveTimeout:处理程序:)
  • 此套接字不是媒体套接字,它仅用于接收来电邀请
  • 应用程序在套接字上的每个传入数据上唤醒(iOS 5.0+限制为300秒内15次)
  • 一旦您接到来电,您的应用程序将被唤醒,您可以为此呼叫打开音频会话

    VOIP应用程序应标记在info.plist的“所需后台模式”下, 作为“voip”和“音频”

    打开音频会话(用于活动通话)后, 您的应用程序可能会在后台完全运行,并且不再挂起, 直到此音频会话关闭。

    无论如何,另一种选择是使用推送通知作为传入呼叫的触发器。

    此外,这将为您省去24/7维护插座的麻烦,节省一些电池,
    并且即使用户关闭了应用程序也能正常工作(第一个备选方案并非如此).

    您能添加一个参考吗?这也给我带来了无尽的麻烦,iOS 5。有没有讨论过解决这个问题,或者为那些有正当理由激活的用户提供解决方案/建议实施方案?请添加更多信息。我们目前在这些方面也有问题。