iOS 后台模式

标签 ios background monitor mode

我对在后台运行应用程序有疑问。 我知道该怎么做,但 Apple 不喜欢我的做法。

为了让您在同一页面上,我有一个安全应用程序,我需要它监控设备,即使它在后台也是如此。这有点像防盗警报器。 我当时正在使用背景音频模式,认为这没关系,因为触发时我会播放声音。不用说,Apple 不喜欢这样。 所以我加了一个ping!它在事件时发出 ping 信号,因此在后台播放背景音频。 再一次,他们也不喜欢这样。

我的应用程序也监控加速度计(但并非总是如此,仅当用户选择时)。

我的问题是,像 Skype 这样的应用程序和其他类似的应用程序如何能够将状态栏变为红色并留在后台? (甚至一些闹钟应用程序也会执行此操作,而不会播放任何音频或任何内容)。

此外,我无法使用通知系统,因为如果我正在监控电池电量,它的更新速度不够快。对于我的应用,我需要立即响应。

在发布问题之前,我也不知疲倦地四处寻找这个答案(我找到的答案对我不起作用..):(

如果您对此有任何见解,我将不胜感激,在此先感谢您!

(如果您需要更多信息,请询问!)

最佳答案

从他们的文档中我可以看出,似乎您可以保持持久后台连接的唯一方法是使用他们的七个 background mode keys 之一。 ,我可以看到您在注册背景音频后一直在尝试。我也知道一些使用此功能的闹钟应用程序(例如 Sleep Cycle),我的假设是它们也在使用背景音频模式,考虑到其他六种模式与他们需要的功能相去甚远。

我认为 Apple 的推理可能是允许这些应用程序这样做,因为他们的应用程序被设计为在用户不积极使用手机时(即他们正在 sleep 时)使用,并且需要唤醒音频用户启动,而如果您正在运行一个想要始终处于事件状态的安全应用程序,它可能会干扰用户可能使用的其他功能,如 Skype。当用户使用它时,红色条也会一直存在于设备的顶部,他们可能会误认为正在播放的东西,因为通常当红色条出现时,对用户来说意味着他们仍在积极使用某物。同样,我认为唤醒警报应用程序和其他不使用持续音频的类似应用程序能够摆脱这种情况,因为它们是为在手机处于非事件状态时使用而设计的,因此当应用程序不活动时会出现持续的红色条可见不是问题。

在其他一些情况下,例如 Nike+(已讨论 here)和可能的计步器,它们似乎使用位置背景模式,因为它们通常还跟踪您去过的地方并且需要知道距离。在我链接到的那个讨论中,看起来其他人能够通过注册适用于他们的后台模式来获得加速度计更新。您是否尝试过注册位置移动?我可以看到的一个缺点是它可能会更快地耗尽电池生命周期,但如果你不经常检查位置,它可能不会太糟糕?另一个是,我认为你在位置背景模式下不能直接播放音频,但你可以尝试触发声音通知? :) 如果适用于您的应用,这可能是一个很好的解决方法。

同样,我对这些应用程序能够做到这一点的原因只是基于我看到其他应用程序的运行方式,Apple 可能有不同的理由接受它们,但这是我最好的方式思考为什么您的应用程序因使用这些模式而被拒绝,而其他应用程序却能够做到。如果位置不是您要找的,很遗憾,我不确定您的应用程序听起来像什么,您是否能够按照您期望的方式在后台持续运行它。

关于iOS 后台模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777389/

相关文章:

ios - 对 touchBegan 示例感到困惑

ios - 检测点击 UITabBarController 中的选项卡

linux - UDP 实时网络摄像头在 Linux 上使用 VLC 流式传输到 iPhone

jquery - 我可以使用 jQuery 加载数据而不让浏览器显示正在加载吗?

html - 在内联 li 中链接 href 背景大小

c++ - 获取特定监视器的处理程序以放置弹出窗口

C# 监视器(来自 Java 开发人员的 POV)

ios - 在 StoryBoard TabBar 上设置托管对象上下文 - 具有嵌入式导航 Controller 的 TableView Controller

ios - CLLocationManager : any way to use requestAlwaysAuthorization and still have blue bar?

python - 该程序会损坏我的显示器吗?