如何快速制作一个闹钟,它会在特定时间调用一个函数来启动音频流?

Posted

技术标签:

【中文标题】如何快速制作一个闹钟,它会在特定时间调用一个函数来启动音频流?【英文标题】:How do I make an alarm clock in swift that will call a function at a certain time to start an audio stream? 【发布时间】:2019-04-17 18:30:16 【问题描述】:

我正在尝试快速制作一个闹钟,它将通过使用背景通知在特定时间播放音频流。我该怎么做?

应用商店中有几个闹钟应用可以做到这一点。其中一个名为“bedr radio”的应用程序能够在您创建警报时选择的特定时间段内播放广播电台。它甚至可以选择在您停止之前永不结束流。我想弄清楚的是当我的手机被锁定或我不在应用程序中时如何调用它。我尝试将手机置于飞行模式,但只收到本地通知。收到它后,应用程序会检查它是否可以启动流,如果它无法播放,它将播放备用警报。调用后台函数来检查它是否可以播放流并做出相应的响应。

另一个名为“Alarm Clock HD”的闹钟应用程序有点不同。当闹钟关闭时,即使不在应用程序或手机锁定时,音量也会缓慢增加。我还尝试将手机置于飞行模式并启动应用程序。它还可以在不使用远程通知的情况下执行后台功能。

我的首要问题是:这些应用如何在应用关闭甚至手机被锁定的情况下完成后台调用功能?

在我的应用程序中,当我的应用程序处于前台时,我使用 willPresentNotification 调用函数。当应用程序在后台时,如何在通知后调用函数?我知道远程通知有办法做到这一点,但是,除非我找不到更简单的解决方案,否则我不喜欢使用服务器。

如何像这些应用一样在后台调用函数?我愿意接受有关其工作原理以及如何将其实现到我的应用中的任何和所有解释。

【问题讨论】:

【参考方案1】:

您可以使用UNNotificationRequest 和UNCalendarNotificationTrigger。这将允许您设置本地通知将触发的日期和时间。在获得用户的通知权限后,设置此通知并确保您的 AppDelegate 具有处理系统通知的代码。

【讨论】:

您在请求通知时使用 UNCalendarnotificationTrigger 是正确的。当应用程序在前台运行时,我已经在我的应用程序中使用它来触发一个功能。但是,我希望当通知在 background 中发出时,将调用一个方法。目前,如果不使用推送通知,我不知道如何做到这一点。

以上是关于如何快速制作一个闹钟,它会在特定时间调用一个函数来启动音频流?的主要内容,如果未能解决你的问题,请参考以下文章

Java中的闹钟

Arduino:如何使用 arduino 创建闹钟

android中的原始闹钟是不是会在闹钟时广播意图?

在C#后面调用Javascript函数[重复]

如何通过在特定控制器和操作上使用 Ajax 调用来重定向用户 [重复]

通知操作按钮不会停止闹钟铃声