是否可以构建一个闹钟,例如 Apple 的内置应用程序?

Is it possible to build an alarm clock such as the built in app from Apple?

许多待办事项列表应用程序(例如 Wunderlist)都提供某种提醒功能,通常只会触发通知。

但我从未遇到过提供与内置预装闹钟类似的通知视图的应用程序。您知道,这会锁定 phone 并提供暂停选项。

这让我想知道内置于 Apple 预装 iOs 应用程序中的闹钟功能(包括设置时间或添加贪睡按钮等)是否仅适用于该特定应用程序?

由于我是一名没有任何编码技能的设计师,所以我只想知道是否可行。

遗憾的是,这对开发人员不可用。您可以在 AppStore 中查看所有闹钟应用程序,它们都使用标准的本地通知。哪个会触发一次,仅此而已。您当然可以设置自定义声音并更改几个选项,但它永远不会像 iPhone 内的 Clock 应用程序那样工作。

您可以在 Apple 文档中阅读有关本地通知的更多信息:https://developer.apple.com/reference/usernotifications/unnotificationrequest

This 应用程序似乎正是这样做的,但我不知道如何...

我对其进行了测试,它成功地在任意选择的时间开始在锁定的设备上播放音乐,并且播放时间比通知声音允许的 30 秒时间长得多。此外,音乐是从在线广播电台流式传输的,这意味着他们找到了一种方法来...

  1. 无需用户交互即可从预定通知中唤醒应用程序
  2. 在后台创建到广播电台的套接字连接
  3. 开始无限期地在后台播放声音

我也试过飞行模式的闹钟,它仍然播放本地存储的备份歌曲,所以它可能没有滥用 VoiP 背景模式或推送通知,但实际上是由本地通知触发的.. .

所以虽然我不知道怎么做,但看起来有一个 App Store Review-proof 方法来创建一个真正的闹钟应用程序。

(我不隶属于此应用程序的开发人员,只是对可能的情况进行了一些研究。)

我认为 Alarmy 会不断地在后台播放(当设置了闹钟时)无声的声音。像 Spotify,但沉默。这使应用程序始终处于活动状态。我通过在我自己的应用程序中记录结果 AVAudioSession.sharedInstance().isOtherAudioPlaying (Swift 4) 得出了这个结论。每当 Alarmy 终止时,它 returns 为假,每当 Alarmy 在后台 运行 时,它 returns 为真。 Ernesto Elsäßer 链接的应用程序也会发生同样的事情。

我用了同样的技巧,我也用了this pod来触发一个功能,然后开始真正的音乐。

我这样做是为了测试,我不会用它来制作应用程序,因为在后台播放无声声音违反了 Apple 的规定。我不知道 Alarmy(或使用相同方法的其他应用程序)是如何摆脱它的。

一些相关问题:

  • App “Alarmy” is able to play iTunes song from background state… How?
  • Wake up application in background using AudioSession like Alarmy iOS app

您也可以查看 this article