setKeepAliveTimeout iOS行为在300秒内超过15次唤醒
我正在编写iOS 5上的VOIP应用程序,我正在尝试了解实际的通信如何在后台保持活跃状态。
我知道,每个时间量都可以获得最大的唤醒次数。 我的问题是,我的套接字连接收到太多的唤醒消息,因为该应用程序终止与崩溃消息:
在300秒内超过15次醒来
我真的不明白的是,如果每个时间段内可以接收的数据量有限制,那么sockets应该如何能够不断地发送和接收数据(为了VOIP的需要)呢?
让我们说,套接字正在接收语音数据,用于在后台进行的语音对话。 这不是说声音数据应该通过套接字连接吗? 如果是这样的话,如果每个时间段的套接字可以有活动的限制,它又怎么能起作用呢?
后台(iOS 4.0+)的VOIP应用程序行为:
VOIP应用程序应标记在info.plist的“所需的背景模式”下,作为“voip”和“audio”。
一旦您打开了一个audio会话(对于主动呼叫),您的应用程序可能会在后台完全运行,并且不会再挂起,直到此audio会话closures。
无论如何,另一种select是将Push通知用作传入呼叫的触发器。
此外,这将节省您维护sockets24/7的麻烦,节省一些电池,
即使用户closures了应用程序也是可以工作的(第一种select并不适用)。
什么版本的IOS,你正在使用的设备?
这是苹果公司在IOS5中引入的一个已知“function”/问题,以减lessVoip应用程序的电池使用量。