【问题标题】:iPhone: Run in the background indefinitelyiPhone:无限期在后台运行
【发布时间】:2011-08-09 14:53:47
【问题描述】:

我正在寻找一种方法让 iPhone 应用程序无限期地在后台运行。此应用程序不会使用定位服务或 VoIP,而是执行特定任务(抱歉,我无法明确说明任务是什么)。该任务类似于检查文件是否存在然后休眠 1 秒。就这个问题而言,任务应该永远运行。

任何帮助将不胜感激。据我从 iPhone 文档中可以看出,我所要求的内容是不可能的,所以我很困惑......

【问题讨论】:

  • 您希望应用在启动时自动启动吗?
  • @GarlicFries 在某些时候,是的。但是出于这个问题的目的,我不需要它。如果您知道如何随意阐述。
  • 您最终是否为此向Apple求助(如您建议的答案中所建议的那样),如果是,结果如何?

标签: iphone multithreading background multitasking


【解决方案1】:

您是对的 - 除非您在后台运行的原因符合 Apple 定义的类别之一(播放音频、voip 等),否则您的应用将不能无限期地在后台运行.如果您想要这样做的原因确实令人信服,您可能想与 Apple 讨论让他们允许这样做。不过,期待一场漫长的艰苦战斗。更实用的方法是寻找可以达到相同效果的方法,例如在服务器上运行后台代码或注册来自系统的各种通知。

【讨论】:

  • 你知道如何向苹果请求这样的东西吗?
  • 我不认为 Apple 曾经或将来会这样做。他们有一套严格的规则,我认为他们不会因为单个应用程序而违反这些规则。此外,他们可能需要更新设备上的软件以支持此类任务。
  • @JoshuaAbrams,一般请求功能,file a bug。如果你真的认为你的应用程序如此创新和引人注目,Apple 可能会考虑让你的应用程序在后台运行,你会想更直接地与他们交谈。我会先联系 Apple Developer Relations - 您可以在开发者网站上找到联系信息。但请记住,有数十万个获得批准的应用程序,因此它们可能已经考虑了大多数用例。
【解决方案2】:

当前的 SDK 无法做到这一点。后台应用只能使用特定服务(音频、位置等)。

【讨论】:

  • 假设我有另一个后台任务是无限期地使用蓝牙与另一个设备通信。支持吗?
  • 没有。只有音频、位置和 voip 任务。
【解决方案3】:

这里描述了 iOS 上的多任务处理。 http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5

允许的多任务类型是audiolocationvoip,所以听起来你的任务在iOS上可能是不可能的。

【讨论】:

    【解决方案4】:

    这只能在越狱环境中完成。如果这不是您的选择,那么 SDK 目前不支持长期后台活动,除非它用于音频、位置或 voip 目的。

    【讨论】:

      【解决方案5】:

      如前所述,真正的后台处理将无法满足您的要求。

      但是,也许您可​​以利用后台通知来达到您的目的?

      【讨论】:

      • 能否请您详细说明后台通知的使用。这怎么可能做到?
      • 你必须告诉我们更多关于你想要达到的目标。
      • 假设我想检查一个文件是否存在,然后休眠一秒钟;永远重复这个
      • 我不会,但它与我需要做的足够相似,所以我以它为例。
      • 除非你说出你想要达到的目标和原因,否则我看不出任何人可以提供帮助。
      【解决方案6】:

      一个令人失望的问题,但我仍然在回答你只是提供逻辑。虽然它在应用商店审核过程中是不可接受的。

      while (your condition)

      { NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init];

        // do your desired task here
      

      [aPool release] }

      致电applicationDidEnterBackground,看看仪器发生了什么,以更好地了解后台工作。

      编码愉快!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        相关资源
        最近更新 更多