如何使用setKeepAliveTimeout:handler - IOS?

5
我们正在开发一款VoIP应用程序,当我的应用程序进入后台时,我一直在尝试使用setKeepAliveTimeout:handler:来保持连接活动。根据苹果文档的要求,最少需要设置600秒的超时时间。实际上,我们正在维护较短的超时时间,是否有可能使用更短的时间处理?
如果超时时间到了,如何使用处理程序重置计时器或请求更多时间,以便保持连接始终处于活动状态(以接收来电)?
这是我正在做的...
- (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?
}
1个回答

2

来自苹果的文档:

The minimum acceptable timeout value is 600 seconds.

关于您的评论的编辑

VoIP连接是一种(几乎)正常的连接方式。也就是说,如果有传入数据,您的应用程序会在后台恢复执行。超时处理程序是为了防止对方超时而您想要ping对方的情况。更多信息请参考TN 2277


你有没有想过如何处理VoIP应用程序的超时处理程序?我想保持与服务器的连接并获取来电通知。 - Newbee
我们能否使用普通的C++套接字(而不是Objective C套接字-NSstream)作为VoIP连接?如果可以,您能指导我如何实现吗? - Newbee
1
苹果公司的文档中可以得知:"在iOS中,不鼓励使用POSIX网络编程"。然而,如果你想要走弯路,也可以尝试一下。如果你只是想避开ObjC并且愿意使用C绑定,那么可以使用CFNetwork - Matthias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接