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

Posted

技术标签:

【中文标题】是否可以构建一个闹钟,例如 Apple 的内置应用程序?【英文标题】:Is it possible to build an alarm clock such as the built in app from Apple? 【发布时间】:2017-04-21 09:12:30 【问题描述】:

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

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

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

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

【问题讨论】:

我一直在寻找相同的东西并找到了这个 GitHub 存储库:github.com/natsu1211/Alarm-ios-swift 【参考方案1】:

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

我用了同样的技术,还用this pod在时机成熟时触发了一个函数,开始真正的音乐。

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

一些相关问题:

How do you constantly run in background? 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。

【讨论】:

真的很有帮助,谢谢【参考方案2】:

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

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

【讨论】:

【参考方案3】:

This app 似乎正是这样做的,但我不知道如何......

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

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

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

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

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

【讨论】:

我正在尝试执行此操作,但不知道如何操作。谁能告诉我我该怎么做?

以上是关于是否可以构建一个闹钟,例如 Apple 的内置应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

是否有用于删除警报的 Android API

在代码中设置 iPhone 闹钟?

没有 Pushkit / Callkit 的 Swift 电话呼叫,如响铃 / 闹钟 / 振动通知

如何在警报通知上自动启动应用程序?

适用于 iOS 的每小时自复位闹钟

如何在 SwiftUI watchOS 上创建闹钟