【问题标题】:Is background tasks the solution for this problem?后台任务是解决这个问题的方法吗?
【发布时间】:2010-12-03 19:31:51
【问题描述】:

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

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

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

我会感谢任何 cmets。

编辑:好的,伙计们。这是实现它的完美方式。

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

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

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

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

【问题讨论】:

  • 我真的很想知道这些公司的名字,这样我就永远不会在那里工作了......无论如何——技术非常有趣:+1
  • 您别无选择,使用块的后台任务是 4.0+ 执行代码的唯一合法方式。您是否认为可以在 iOS 上构建服务? AFAIK 如果没有越狱,你就无法做到这一点
  • @vikingosegundo - 也许只是编写应用程序来验证账单的正确性。但至于你的意思,如果你为一家公司工作并使用他们的工具,你为什么要期待隐私呢?如果你用公司的电脑浏览互联网,你会期待吗?
  • @vikingosegundo - 感谢徽章。
  • @Peter M — 可能用于账单检查 — 公司账单和客人的任何手机账单、私人手机、使用房屋前街道上手机的人......跨度>

标签: iphone objective-c multithreading ios background


【解决方案1】:

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

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

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

希望能帮上忙 远方

编辑:看看下面的答案!

【讨论】:

  • 请允许我说你错了。有一种测量方法,我做到了!您可以检查每个网络接口(lo、en0、pdp_ip0 等...)。系统将有关该接口的所有信息保存在一个结构中,我们可以检查我们在该结构中具有哪些值。谷歌搜索“getifaddrs”和“struct ifaddrs”。您一定会找到有关它的信息。我做到了,它工作正常。重要提示:后台解决方案仅是每 1 分钟监控一次接口。
猜你喜欢
  • 2011-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 2020-02-24
相关资源
最近更新 更多