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

Tri*_*nca 18 iphone multithreading background objective-c ios

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

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

我认为在背景中的任务是否是我问题的最佳解决方案.

我会感激任何评论.

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

首先,您必须阅读:http: //www.christian-fries.de/blog/files/tag-ios.html

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

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

多数民众赞成.我希望它可以帮到你.

end*_*nda 2

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

您看到的应用程序进行了估计(例如 1mb/min)并在 applicationWillEnterForeground 之后。然后你计算时间 x 估计交通量就可以了。

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

希望可以帮助远藤

编辑:看下面的答案!