自定义警报通知 IOS 保留应用程序 运行

Custom alarm notifications IOS keep application running

我正在尝试创建一个闹钟应用程序,它可以播放下载或流式传输的视频和音频作为本地通知。对于 Android 这是可行的,但对于 IOS 我知道苹果有限制。

我注意到 Rise 和 The Rock Clock 要求您将应用程序保持在前台(如下例)。我读到他们通过禁用多任务处理来做到这一点 UIApplicationExitsOnSuspend

我想知道这是否仍然是显示自定义通知的唯一(最佳?)方式,或者它们是否仅支持较旧的操作系统并且 IOS 中的变化提供了更好的用户体验?

谢谢

没有那么多可能的方法,没有一个是好的。

  1. 您可以安排 UILocalNotification 或 UNNotificationRequest。通过这种方式,您可以使用一些预定义的声音创建警报。没有帮助,因为声音持续时间限制和无法播放流。
  2. 带后台配置的URLSession。根据 documentation 您可以安排请求。仅适用于 iOS 11,不保证请求将被执行。

  3. 使用 VoIP 或静默推送。这种类型的推送有可能在设备收到时在后台启动应用程序。棘手的方法,但可以完成这项工作。如果用户没有互联网连接则没有帮助。

  4. 将应用程序保持在前台。最简单的方法,就像一个魅力。设备电池太重。

UPD:只是为了将所有答案集中在一个地方(感谢 @jba)。

也可以使用 "Audio and Airplay" 背景类别。您可以在设备锁定时播放 "silence" 或录制音频。这是非常耗能的方式,而且,一些 OS 中断,例如 phone 通话,可以停止音频 playback/record 并且可以暂停应用程序。

Apple 不会给你很多方法来实现这一点,但你所拥有的少数方法很好而且非常精确 documented。 对于您的应用程序,我建议您使用 "Audio and Airplay" 选项,因为它将允许您在后台播放 and/or 录制音频。然后你的努力工作就是找到正确的方法来解释你为什么要向你的用户这样做,以及对他们有什么好处......最后这个功能会让你的应用程序一直活着直到触发警报然后播放你的音频文件。