2013-02-25 134 views
5

我们正在研究一个VoIP应用程序,当我的应用程序变为后台时,我一直在尝试使用setKeepAliveTimeout:处理程序:保持连接处于活动状态。根据苹果的文件,他们要求至少600秒作为超时。其实我们保持较少的超时值,是否有可能以较少的时间处理?如何使用setKeepAliveTimeout:处理程序 - IOS?

如果超时,如何使用处理程序重置计时器或请求更多的时间,以便我可以保持我的连接一直活着(接收来电)?

下面是我在做什么...

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 
    if (backgroundAccepted) 
    { 
     NSLog(@"VOIP backgrounding accepted"); 
    } 
} 




- (void)backgroundHandler { 

    NSLog(@"### -->VOIP backgrounding callback"); // What to do here to extend timeout? 
} 

回答

2

Apple的文档:

The minimum acceptable timeout value is 600 seconds. 

编辑关于您的评论

VoIP连接是(几乎)正常连接。也就是说,如果你的数据包含了数据,你的应用会在后台恢复执行。超时处理程序适用于you想要ping对方以避免超时的情况。多一点信息给TN 2277

+0

你有任何想法如何处理VoIP应用程序的超时处理程序。我想保持连接到服务器并获得来电通知? – Newbee 2013-02-25 10:29:09

+0

我们可以使用普通的C++套接字(不是客观的C socket-NSstream)作为VoIP连接吗?如果是的话,你能指出我正确的方向怎么做吗? – Newbee 2013-02-25 11:52:05

+1

从[Apple's](http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html)文档:“在iOS中,不鼓励POSIX网络”。但是,如果你想努力工作,你可以尝试一下。如果您只想避开ObjC并对C绑定感到满意,请使用[CFNetwork](https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html)。 – Matthias 2013-02-25 12:09:03

相关问题