【问题标题】:iOS Background ModeiOS后台模式
【发布时间】:2013-03-24 12:44:52
【问题描述】:

我有一个关于在后台运行应用程序的问题。 我知道该怎么做,但 Apple 不喜欢我的做法。

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

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

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

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

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

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

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

【问题讨论】:

  • 你是怎么解决这个问题的?
  • 很抱歉回复得太晚了,但我们只是与苹果争论,直到他们让步。我们确实必须保持 ping 噪音,但我们允许用户进入设置并将其静音,如果他们通缉。 >:)

标签: ios background monitor mode


【解决方案1】:

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

开启后台模式功能

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

后台获取

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

开始:

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

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

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

【讨论】:

    【解决方案2】:

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

    来自the docs

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

    简短的故事:我认为您对提议的实施不走运。

    【讨论】:

    • 是的,我认为我们必须说服 Apple 为什么我们要以现在的方式使用它(我们以前尝试过,但我想我们会再试一次..)哈哈。感谢您的宝贵时间!
    【解决方案3】:

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

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

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

    再次重申,我之所以认为这些应用程序能够做到这一点,只是基于我看到其他应用程序的运行方式,Apple 接受它们的原因可能不同,但这是我最好的方法思考为什么您的应用程序因使用这些模式而被拒绝,而其他人却能够做到。如果位置不是您想要的,很遗憾,我不确定您的应用在做什么,您是否能够以您期望的方式在后台连续操作它。

    【讨论】:

    • 您好!感谢您的回复!使用定位服务的唯一问题是用户在使用这个应用程序时很可能不会移动,它的设计目的就像一个信息亭警报器。如果拔掉或移动(当用户不想触摸设备时),它会发出声音。我认为您讨论为什么某些应用程序可以摆脱它的信息是我们的答案,它似乎是其中之一,“您需要说服 Apple 为什么需要这种模式”之类的东西。谢谢你的时间!我很感激!
    • 没问题!这很不幸,但我确实认为这只是他们必须了解为什么它会以这种方式工作的情况之一。我觉得在这种情况下注册背景音频是有意义的,因为它正在等待用户的提示。我不确定 Sleep Cycle 开发人员是否易于联系,但您可以随时尝试询问他们什么是有效的,因为您的实现非常相似! (编辑:如果你让声音正常工作,位置实际上也可能对你有利,因为你希望它保持完全静止,所以你会注意任何形式的运动)
    • 好主意!我想既然我们实际上并没有使用位置,他们会拒绝它,但如果我们不能说服他们,它总是值得一试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多