iphone - 后台任务是这个问题的解决方案吗?

标签 iphone objective-c multithreading ios background

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

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

我在想后台任务是否是解决我的问题的最佳方案。

如有任何意见,我将不胜感激。

编辑:好的伙计们。这是做到这一点的完美方式。

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

我试过了,效果很好。 我们需要做的就是创建一个与主线程分离的第二个线程。这样我们就有了一个永远运行的连续线程。您还必须在 Apple 的网站上查看 GCD 文档。

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

就是这样,伙计们。 希望对您有所帮助。

最佳答案

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

您看到的应用进行了估算(例如 1mb/分钟),并且在 applicationWillEnterForeground 之后。然后你计算时间 x 估计流量,然后我们开始。

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

希望能帮到你 内

编辑:看下面的答案!

关于iphone - 后台任务是这个问题的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349182/

相关文章:

ios - 快速折叠一行上的 tableView 行选择

iphone - xamarin iOS 内容文件

Objective-C:协议(protocol)

Python socketserver向多个客户端发送数据cpu使用率高

ios - 在 iOS 应用程序中获取所有选定的辅助功能选项

ios - 如何在同一个 ViewController 中禁用特定 UITextField 的键盘?

ios - 关闭模态,然后立即推送 View Controller

java - 在另一个类中声明Lock对象并在另一个类中调用锁的方法

c# - JoinableTaskFactory.RunAsync 的正确用法是什么?

ios - 需要 iPhone SE 开发支持才能使 App 获得 Apple 审核团队的批准