解雇一系列 UILocalNotifications 或替代方法来实现相同的功能

Posted

技术标签:

【中文标题】解雇一系列 UILocalNotifications 或替代方法来实现相同的功能【英文标题】:Dismiss a series of UILocalNotifications or an alternative approach to achieve the same functionality 【发布时间】:2011-02-01 22:06:58 【问题描述】:

我正在构建一个可用于进行间歇训练的小应用程序, 它安排了一系列UILocalNotifications,都安排在同一个 时间和所有在几分钟内发射。

这个想法是你戴上耳机开始锻炼, 当您听到一种声音时,您会休息,而另一种声音 听起来你锻炼。我使用本地通知来执行此操作,它有效 正好。这样做的原因不仅仅是 让应用程序使用计时器运行是我想要的 Nike +iPod 应用程序同时在前台运行。

通知只是一个警报和一个确定按钮:

[notif setHasAction:NO];

所以想法是:戴上耳机,启动我的应用程序,它会安排一系列通知 - 然后开始 Nike +iPod 锻炼。当您听到通知声音时,从休息改为锻炼,反之亦然。

好的,当锻炼结束时,屏幕上有 15 个以上的通知,需要手动关闭它们,这有点烦人,而且一点也不友好。

我现在的问题是,是否有办法只发布声音通知?或确保在弹出新通知时删除较早的通知,或者是否有不同/更好的方法来实现在应用程序处于后台时获取“声音指示器”的功能?

希望有人可以提供一些经验或替代方案的好主意:) 提前致谢。

【问题讨论】:

【参考方案1】:

我无法确认这实际效果如何,但如果您在创建 UILocalNotification 对象时将 alertBody 属性设置为 nil(这是默认值),它应该会阻止当您触发它们时,屏幕上会出现警报。

此外,您可能还希望将 hasAction 属性设置为 NO,以防止用户看到操作按钮(如果您有警报)或滑块(如果他们有设备已锁定)。

但至于实际堆叠的通知警报 - 我不相信有任何方法可以防止它们堆叠。这可能是值得关注的事情,因此 Apple 可以考虑在未来的 ios 版本中允许这种情况发生。

【讨论】:

这是一个超级简单的解决方案,将 alertBody 设置为 nil :) 我从没想过这会奏效 - 但它确实如此,非常完美!我知道 Apple 不鼓励这样做,因为不鼓励没有任何视觉表示的警报声音,但没关系,我只需要它来进行自己的锻炼,而不是在 App Store 中发布:) 谢谢。

以上是关于解雇一系列 UILocalNotifications 或替代方法来实现相同的功能的主要内容,如果未能解决你的问题,请参考以下文章

UILocalNotification 声音每隔一段时间播放一次

具有重复一次行为的 UILocalNotification,如 Messages App

每天在同一时间安排一次 UILocalNotification

有没有一种简单的方法来编辑/修改 UILocalNotification

如何在每隔一天或每隔一天安排一次 UILocalNotification?

UILocalNotification 显示 400 个徽章