iPhone闹钟应用程序中的贪睡闹钟?

Posted

技术标签:

【中文标题】iPhone闹钟应用程序中的贪睡闹钟?【英文标题】:Snooze Alarm in Alarm Clock Application in iPhone? 【发布时间】:2013-04-11 04:39:46 【问题描述】:

我一直在开发闹钟应用程序并使用本地通知来弹出警报。 我还需要根据用户在用户设置中设置的时间间隔来打盹。

在应用程序启动之前,用户不能打盹,即调用下面提到的方法。

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

当我通过在firedate中添加时间间隔并重新安排本地通知来调用打盹警报的方法时。

问题是应用程序进入前台,根据 Apple 的 HIG,我不应该终止应用程序或将应用程序自动发送到后台,因此用户需要按主页按钮将应用程序发送到后台。

最近,我遇到了this app。它可以按我想要的方式打盹。

还有一个问题是我可以从this app的我的音乐库中选择要播放的声音。

知道这个应用程序是如何做到这一点的吗?

【问题讨论】:

【参考方案1】:

为了做你想做的事,有几件事需要考虑。您使用UILocalNotification 的方法是正确的,因此这是一个好的开始。

为了正确实现“贪睡”功能,您需要考虑应用在前台和后台运行。

如果应用程序在前台(或用户从外部通知横幅打开应用程序)application:didReceieveLocalNotification: 将被调用,您只需更新您的 UI 以显示贪睡按钮并从从 NSUserDefaults 加载的持续时间。 如果应用在后台并且用户关闭了通知,则无法随后尝试“暂停”警报。

关于从 iTunes 库中播放自定义声音,请查看 UILocalNotification 上的 soundName 属性

【讨论】:

谢谢丹,我已经在检查应用程序状态,即如果应用程序在前台,我可以做任何我想做的事情,比如显示警报视图、播放声音等。问题是应用程序时该怎么做在后台?正如我在我提到的应用程序中看到的那样,它在后台打盹。该应用程序是否可能使用推送通知而不是本地通知? 对于本地通知的声音名称属性:Apple 表示声音文件不应超过 30 秒。 iTunes 库中的文件可能超过 30 秒,我尝试从媒体控制器获取文件路径并将其设置为声音名称,但没有成功。我猜是因为 iTunes 文件大于 30 秒。或者可能我做错了。 是的,我会说他们正在使用推送通知并通过云中的 Web 服务控制警报。这样,如果未清除通知,他们可以在 x 分钟后再推送一次并“打盹”。这有意义吗?

以上是关于iPhone闹钟应用程序中的贪睡闹钟?的主要内容,如果未能解决你的问题,请参考以下文章

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

在代码中设置 iPhone 闹钟?

如何以编程方式设置 iPhone 闹钟?

如何使用代码在 iphone 中打开本机闹钟?

是否可以在 Iphone 中创建视频警报? [关闭]

iPhone闹钟渐进式音乐提醒+音量控制