10

我有一个关于在后台运行应用程序的问题。我知道该怎么做,但苹果不喜欢我这样做的方式。

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

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

我的问题是,像 Skype 这样的应用程序和其他类似应用程序如何能够将状态栏变为红色并留在后台?(甚至一些警报应用程序也会这样做,而不播放任何音频或任何东西)。

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

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

我将非常感谢您对此的任何见解,在此先感谢!

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

4

3 回答 3

8

从我从他们的文档中可以看出,保持持久后台连接的唯一方法似乎是使用他们的七个后台模式键之一,我可以看到您自从注册后台音频以来一直在尝试。我也知道一些使用此功能的警报应用程序(例如睡眠周期),我的假设是他们也使用背景音频模式,考虑到其他六种模式与他们需要的模式相差甚远。

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

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

同样,我对这些应用程序能够做到这一点的原因只是基于我看到其他应用程序的运行方式,Apple 接受它们的原因可能不同,但这是我思考为什么你的应用程序因使用这些模式而被拒绝,而其他人能够做到这一点。如果位置不是您想要的,不幸的是,我不确定您的应用程序在做什么,您是否能够以您期望的方式在后台连续操作它。

于 2013-04-03T02:42:31.770 回答
2

每个应用程序都需要响应。用户希望应用程序在打开时就可以准备好内容,因此开发人员应该使用后台模式来使他们的应用程序更加用户友好。

打开后台模式功能

  1. 转到 Xcode 并打开您的项目。
  2. 在您的应用目标中,导航到功能选项卡。
  3. 打开后台模式。

后台获取

后台获取是一种新模式,可让您的应用始终与最新信息保持同步,同时最大限度地减少对电池的影响。您可以使用此功能在固定时间间隔内下载提要。

开始:

1- 在 Xcode 的功能屏幕中检查 Background Fetch。

2- 在 AppDelegate 的 application(_:didFinishLaunchingWithOptions:) 方法中,

参考:https ://medium.com/@javedmultani16/background-modes-in-ios-3da25b9e6474

于 2019-04-30T11:18:26.813 回答
0

只有当您积极使用使应用保持清醒的活动时,您才能使用背景模式:例如,持续播放音频是对音频背景键的有效使用。他们会非常努力地查看您是否真的需要您请求的访问权限,如果不需要,他们会拒绝您(正如您已经发现的那样),因为后台服务比其他服务消耗的电池电量要多得多。

文档

这些密钥应谨慎使用,并且只能由提供指定服务的应用程序使用。

短篇小说:我认为您对提议的实施不走运。

于 2013-04-03T03:02:08.563 回答