【问题标题】:How to prevent the app from going to sleep, in order to integrate a sleep mode for the music如何防止应用进入睡眠状态,以便为音乐集成睡眠模式
【发布时间】:2017-04-17 12:27:31
【问题描述】:

我有一个可用的音乐应用程序,用 Swift 编写。 我想集成一个睡眠模式,可以暂停播放的音乐,比如 10 分钟。 我使用perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval) 完成这项任务,效果很好。

但是有一个问题。 iPhone 很有可能会在 10 分钟结束前进入睡眠状态,因此不会调用暂停函数,音乐会继续播放。

我了解还有其他方法可以在 10 分钟后发送操作(NSTimer,使用 GCD),但如果我了解,这些解决方案都不会阻止机器进入睡眠状态或唤醒应用程序以执行任务.

也许我可以使用background mode,但是:

  1. 我的目标并不是这种模式应该解决的问题。我不想有一些时间来完成,我只想要在某个时间点 1/10 秒的处理器。
  2. 此选项不保证工作 10 分钟。

这是实现我需要的方法吗?

【问题讨论】:

  • 您可以使用UIApplication.shared.isIdleTimerDisabled = true 阻止设备进入睡眠状态,但这可能会将婴儿与洗澡水一起扔出去。

标签: ios swift timer background-process sleep-mode


【解决方案1】:

你可以这样做:UIApplication.shared.isIdleTimerDisabled = true,因为这是 Swift 3 中唯一的方法,你可以在 Swift 2 中使用 UIApplication.sharedApplication().idleTimerDisabled = true,或者在 Objective-c 中使用 [UIApplication sharedApplication].idleTimerDisabled = YES;

【讨论】:

  • 这是有效的,但我有两个问题:首先,这将保持显示,这不是我的目的所必需的。但更重要的是:Apple 是否会使用此设置验证应用程序? (即使我在应用程序暂停声音时立即禁用它)其他方式获得相同类型的结果仅适用于Apple的特定类型的应用程序。
  • 如果这不是您所需要的,那么我很抱歉;否则我不知道。是的,Apple 会允许这样做:我见过大量具有该功能的应用程序 - 抱歉,我并没有那么有帮助。
猜你喜欢
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多