【问题标题】:Start data downloading in background mode在后台模式下开始数据下载
【发布时间】:2012-03-13 13:12:53
【问题描述】:

当我的 iphone 应用程序处于后台模式时,我需要具备以下条件才能工作。

1.运行时钟。

2.每15分钟与服务器通信一次,获取服务器时间和另一个值。

3.需要在后台开始下载数据。

我搜索了很多这些是否可能。请确认这些。

我正在开发一个涉及票务预订系统的 iPhone 应用程序。我将我的应用程序注册为基于位置的应用程序,因为它出于某种目的使用在后台获取的用户位置。

我的问题是我需要在后台模式下在我的应用程序中运行一个内部时钟。我需要在核心位置委托方法中编写内部时钟的代码,以便内部时钟也将与位置 bsed 服务一起运行。我的应用程序会被拒绝吗?这样做有什么不对吗?

我需要在我的应用程序中使用正确的时间,以便我运行这个内部时钟。我可以使用 NSDate,但这会返回设备时间。任何人都可以更改设备时间。所以一旦有人更改,错误的时间会影响应用程序的流畅运行。请一些机构建议在不运行内部时钟的情况下获得正确的时间?

【问题讨论】:

  • 您的搜索发现了什么?
  • 当您的应用处于后台模式时,您无法执行此操作。
  • 我的应用程序高度依赖于上述内容。请提出一些解决方案。在我的研究中,我发现后台服务只允许用于基于位置的应用程序、VOIP 和音乐播放。并且还在后台继续一个有限长度的过程,大约 10 分钟。

标签: iphone xcode background


【解决方案1】:

我想您想在应用程序不在前台运行的情况下执行此操作 - 如果您不使用播放空音频文件和假装音乐播放器等技巧,这是不可能的。

在 iOS 中,您只能在应用程序在前台主动运行时执行代码,但某些特定任务(如 VOIP 或音乐播放)除外。

如果您想在应用程序在前台运行时执行此操作,只需使用 NSTimer 和后台进程进行加载,就像建议的那样。但是你也应该阻止 iPhone 在 1 分钟后进入 SLEEP 模式,否则当用户在 15 分钟内没有积极使用该应用程序时它不会工作......

【讨论】:

  • 是的,我想做所有这些,当应用程序不在前台运行时。我需要每 15 分钟调用一次 web 服务,并通过检查从 API 获得的响应来触发下载。在苹果文档中,我看到后台服务只允许用于基于位置的应用程序、VOIP 和音乐播放。有什么方法可以满足我的要求。请详细解释这些技巧。提前致谢。
  • 到目前为止我还没有这样做,而且我想 Apple 也对任何使用后台运行进程进行非预期目的的人不屑一顾 - 你的应用程序可能会被拒绝。如果您真的想这样做,请四处搜索,有很多关于如何使用这些技巧的解释。
【解决方案2】:

这是可能的,你需要做的是,

1] 运行一个后台线程,其中设置一个 15 分钟的 NSTimer。

2] 设置 repeat:YES 以每 15 分钟调用一次。

3] 然后开始下载您的需求!

如果我像你的情况一样坚持下去,我会这样做!

【讨论】:

  • 我想在应用程序不在前台运行时全部执行。您建议的方法在我的情况下是否可行?请确认。
  • 您需要在应用程序委托中运行一些后台线程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2019-06-09
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
相关资源
最近更新 更多