【问题标题】:Is it possible to have a running background app on iOS是否可以在 iOS 上运行后台应用程序
【发布时间】:2013-06-05 21:16:09
【问题描述】:

这很奇怪,我需要创建一个 iOS 应用程序,它在 iOS 设备的后台运行,但在设备的主屏幕上不可见。该应用程序可能需要显示在 设置 中以配置一些选项,但它主要需要在后台运行。

我不需要在应用商店发布这个应用程序,它严格来说是我公司的企业应用程序。

有谁知道如何实现这种行为?配置文件?蜜蜂?等等?

编辑:越狱设备对我们来说并不是一个真正的选择。我们必须保持设备原样。

【问题讨论】:

  • 我在这里可能完全错了,但根据我的经验,这是无法做到的,因为应用程序在移动到后台时处于空闲状态。 @Kevin 的方法可能是唯一可以追求的选择。
  • @ldav 也许你误解了这个问题。他在问如何获得一个不显示在跳板(主屏幕)上的应用程序。
  • @izuriel,越狱所有人的手机!祝你好运!
  • @Kevin,那么应用程序是如何启动的?无论如何,答案中的 HIG 链接可能有一些限制:不,你不能这样做。
  • @ldav1s 大概在启动时,就像后台守护进程一样。

标签: ios objective-c iphone-privateapi


【解决方案1】:

背景

有几种方法可以获得永久的后台执行:

a) JRG-Developer 提到的静音音频

b) 使用 beginBackgroundTaskWithExpirationHandler + 打开/关闭位置管理器(它将剩余时间重置为 600 秒)

使应用不可见

您可以在 Info.plist 中使用 SBAppTags(看看这个:How to remove app icon programatically from jail broken iPhone app?

这将使您的图标在主屏幕上不可见。

【讨论】:

  • +1。我认为在 Info.plist 中添加 voip 作为后台模式也会在手机启动时自动启动应用程序,从而无需应用程序图标。我在越狱的手机上测试了这个,但我认为它也应该在越狱的设备上工作。
【解决方案2】:

我不知道如何处理not be visible on the home screen 标准,但某些服务可以在后台连续运行,特别是:

  • 背景音频(甚至是无声音频)

虽然这确实很hacky,但没有越狱设备,这可能是你最好的选择。

虽然通过审核过程不太可能/非常困难,但如果出于某种原因您确实需要(尝试)将此应用程序发布到 App Store,某些应用程序甚至可以在 App Store 上使用,这些应用程序可以利用这个 hack,比如PasteBot

您绝对应该在这里阅读他们关于让他们的应用程序的剪切和粘贴功能在后台工作的文章:

http://tapbots.com/blog/pastebot/pastebot-music-in-background

另一个开箱即用的想法,为什么不改用支持多任​​务处理的 Android 设备

【讨论】:

  • 问题指定它不需要应用商店的批准。 Info.plist 中的SBAppTags 值将隐藏图标(参见 Victor 的回答),voip 模式将自动启动应用程序。
【解决方案3】:

两种方法:

  1. 越狱。越狱的 iPhone 本质上是一台 Mac,您可以使用所有 Mac UNIX 编程技巧 - 生成一个守护进程(您甚至可以要求 launchd 执行此操作)或其他什么。您可以设置企业级 Cydia 源。请参阅 saurik 的网站了解演练并使用 Ubuntu(也使用 apt)设置实验服务器

  2. 可能采用非越狱方式,但这取决于您的应用程序在做什么。您可以尝试使用企业级推送通知。

【讨论】:

    【解决方案4】:

    鉴于这在非越狱手机上是不可能做到的,我建议如下:

    • 开发一个目录应用程序或电话列表应用程序,这是您公司特有的。

    • 让它每天连接一次网络服务来注册设备 ID(这样你就知道用户没有删除应用程序)

    • 告诉用户他们需要始终保持应用打开(如果用户的设备有一天没有注册,请向他们发送一封电子邮件,要求他们启动应用)。

    现在您可以使用该应用发送任何您想要的东西。如果他们杀了它,第二天当你有一个脚本查看日志时你就会知道。

    如果您认为这是一个糟糕的想法,那么它是,但它是您现在在 iOS 上将获得的最好的。

    编辑:您可以每天发送通知(比如在上午),以确保用户在应用未运行时打开了该应用。

    【讨论】:

    • 其实我觉得不用越狱也是可以的(注意他不需要App Store的批准)。当然,我无法添加答案,因为该问题已作为另一个问题的副本而关闭,该问题显然是在问一些不同的问题。
    【解决方案5】:

    根据我的经验,这种行为在 iOS 上是无法实现的。当应用程序进入后台时,它仅在一小段特定时间内处于活动状态。之后,它进入休眠状态。它停止工作。因此,如果不滥用 iOS 工作流程,就无法实现您所说的行为。这就是为什么有些人将 iOS 的多任务处理称为不是真正的多任务处理。只有越狱可能会帮助您解决问题。那是一个案例。在主屏幕上无法看到应用程序的第二个问题再次是不可能的。它必须在跳板上才能运行。

    【讨论】:

    • 恕我直言,“不可能”和“hacky”是两个不同的东西......我认为作者知道这不是 iOS 的设计目的,而且真的不是一个好主意...... . 但是,嘿,这是 StackOverflow,“不是一个好主意”的意思是“可以做到”(你真的不应该这样做):)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多