我已经使用CFNetwork在我的应用上实现了HTTP服务器。
服务器在某个时刻启动,以通过NSFileHandleConnectionAcceptedNotification
收听请求。
如果在应用程序处于活动状态时发出请求,则效果很好。
问题是当我从我的应用程序打开Safari以加载此服务器提供的页面时:应用程序转到后台并冻结。 Safari似乎在等待响应,但只有在我回到应用程序时才会出现响应。
如何在服务器切换到Safari并进入后台后,让服务器监听这些请求一段时间?或者如何实现HTTP服务器的最佳方式呢?我只需要在Safari上打开页面然后停止运行。
答案 0 :(得分:0)
我找到了一种非常简单的方法让它发挥作用。
当应用程序进入后台时,我正在创建后台任务。
刚刚将以下代码添加到applicationDidEnterBackground:
__block UIBackgroundTaskIdentifier bgTask =
[application beginBackgroundTaskWithExpirationHandler:^
{
dispatch_async(dispatch_get_main_queue(), ^
{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}];