iOS后台模式

10

我有一个关于后台运行应用程序的问题。

我知道如何做,但是苹果不喜欢我这样做。

让你了解背景情况,我有一个安全应用程序,我需要它在后台监视设备。这有点像防盗警报。

我使用了背景音频模式,认为这样做没问题,因为当它被触发时会播放声音。不用说,苹果不喜欢那样。

所以我添加了一个ping!它在活动时发出ping声,从而在后台播放背景音频。

但是他们也不喜欢那个。

我的应用程序还监视加速度计(但不总是,只有用户选择时才监视)。

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

另外,我不能使用通知系统,因为如果我监视电池电量,它更新得不够快。对于我的应用程序,我需要立即响应。

在发布我的问题之前,我已经孜孜不倦地搜索了这个答案(我找到的答案对我没有用..)。:(

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


你是如何解决这个问题的? - Aleksei Sakharov
非常抱歉回复晚了,但我们一直与苹果争论直到他们让步。不过我们必须保留ping声音,但我们允许用户进入设置并将其静音,如果他们想的话。> :) - JoeyMaru
3个回答

8
根据他们的文档,我了解到唯一保持持久后台连接的方法是使用七个背景模式键之一,我看到您自注册背景音频以来一直在尝试。我知道一些闹钟应用程序也使用此功能(例如Sleep Cycle),我的假设是它们也在使用背景音频模式,考虑到其他六种模式远远不足以满足它们的需求。
我认为苹果的理由可能是这些应用程序被允许这样做,因为他们的应用程序被设计成在用户不活跃时(即当他们睡觉时)使用,并需要音频将用户唤醒,而如果您运行一款希望始终处于活动状态的安全应用程序,则可能会干扰其他用户可能使用的功能,如Skype。当用户使用设备时,红色条也将始终存在于设备顶部,他们可能会将其误认为仍在播放某些内容,因为通常出现红色条意味着用户仍在积极地使用某些内容。同样,我认为闹钟应用程序和其他类似的应用程序,如果没有使用持续性音频,就能够逃脱惩罚,因为它们是设计用于手机不活跃时使用的,因此当应用程序不可见时具有持久的红色条不是太大的问题。
在一些其他情况下,比如Nike+(这里讨论过),以及可能的计步器,它们似乎正在使用位置后台模式,因为它们经常跟踪你去了哪里并且需要知道距离。在我提到的那次讨论中,看起来其他人能够通过注册适用于他们的后台模式来获得加速度计更新。你尝试过注册位置移动吗?一个缺点是它可能会更快地耗尽电池寿命,但如果你不经常检查位置,那可能还好。另一个缺点是我认为你不能在位置后台模式下直接播放音频,但你可以尝试触发声音通知? :) 如果这对你的应用程序有效,那可能是一个不错的解决方法。

再次说明,我认为这些应用程序之所以可以这样做,是基于我观察到的其他应用程序的运行方式,而苹果可能有不同的原因接受它们,但这是我最好的想法,为什么您的应用程序因使用这些模式而被拒绝,而其他应用程序能够执行此操作。如果位置不是你要寻找的,很遗憾从你的描述中我不确定你的应用程序能否在后台以你期望的方式持续运行。


你好!感谢您的回复!使用位置服务的唯一问题是用户在使用此应用程序时很可能不会移动,它被设计为像一个信息亭警报一样工作。如果拔掉电源或移动(当用户不希望触摸设备时),它将发出声音。我认为您讨论某些应用程序为什么可以逃脱这种情况的那部分信息就是我们的答案,似乎这是一种“您需要说服苹果为什么需要这种模式”的事情。感谢您的时间!我很感激! - JoeyMaru
没问题!虽然有点遗憾,但我认为这只是其中一种他们必须看到它为什么会这样工作的情况。在那种情况下,我觉得注册后台音频是有意义的,因为它正在等待用户的提示。我不确定Sleep Cycle开发人员是否容易联系,但您可以尝试询问他们哪些操作有效,因为您的实现非常相似!(编辑:如果您让声音正常工作,位置实际上也可能对您有利,因为您希望它保持完全静止,因此您将观察任何类型的移动) - Jacob Terry
1
好主意!我原以为因为我们实际上并没有使用位置,他们会拒绝它,但如果我们无法说服他们,尝试一下总是值得的! - JoeyMaru

3

响应能力是每个应用程序的需求。用户希望打开应用程序时即可获得他们想要的内容,因此开发人员应使用后台模式使其应用程序更加用户友好。

开启后台模式功能

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

后台获取

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

开始操作:

1- 在Xcode的功能屏幕中检查后台获取。

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

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


0

只有在您积极使用保持应用程序唤醒的活动时,才能使用后台模式:例如,连续播放音频是音频后台密钥的有效用途。他们会仔细查看您是否真正需要请求的访问权限,如果不需要,他们将拒绝您(就像您已经发现的那样),因为后台服务比其他服务更大程度地消耗电池。

来自文档

这些密钥应该被节约使用,仅由提供指定服务的应用程序使用。

简而言之:我认为您的建议实现方式不太可能成功。


是的,我觉得我们需要说服苹果为什么我们要按照我们的方式使用它(我们以前已经尝试过,但我想我们会再试一次...)哈哈。感谢你的时间! - JoeyMaru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接