后台任务是解决此问题的方法吗?

时间:2010-12-03 19:31:52

标签: iphone objective-c multithreading ios background

我需要开发一个监控网络流量的企业应用。基本上,它检测用户是否处于Wi-Fi或蜂窝数据中,并保存在一段时间内发送和接收的字节数。 我在AppStore看到了一个完成这项工作的应用程序。 使用Apple提供的Reachability Sample检测wi-fi或蜂窝数据非常简单。 我的问题是在应用程序处于后台时继续监视发送和接收的字节数。

由于它是企业应用程序,我使用UIBackgroundModes“voip”来避免应用程序被终止。 我还安装了setKeepAliveTimeout方法,我能够每10分钟看一次日志,但是在方法运行后只有10秒钟。我的意思是,setKeepAliveTimeout让我的应用程序每1分钟运行一次计时器10秒钟。

我在考虑是否背景中的任务是我问题的最佳解决方案。

我会感激任何评论。

编辑:好的伙计们。这是完美的方式。

首先你必须读到这个:  http://www.christian-fries.de/blog/files/tag-ios.html

我尝试了这个并且它工作得非常好。 我们需要做的就是创建一个与主要线程分离的第二个线程。这样我们就可以永久地运行连续线程。您还必须在Apple的网站上查看GCD文档。

对于企业应该考虑的第二件事应用是将其设置为voip应用程序,这样iOS即使在重新启动后也会使您的应用程序运行。这是iOS必须保持voip应用程序运行的特殊行为。

是的,伙计们。 我希望它可以帮到你。

1 个答案:

答案 0 :(得分:2)

我们无权访问这些数据。没有办法衡量流量。

您看到的应用程序进行了估算(例如,1mb / min),并在applicationWillEnterForeground之后进行了估算。然后你计算时间x估计的流量,然后我们去。

不幸的是没有办法衡量,  所以我在设置中进行了流量重置,然后我播放了1分钟的音乐。经过几次重复,我得到了我的结果。问题是,这适用于静态流量处理,如音频或视频。

希望能有所帮助 endo

编辑:看下面的答案!