【问题标题】:What is the best way to modify a UILocalNotification after it has fired?触发后修改 UILocalNotification 的最佳方法是什么?
【发布时间】:2015-01-16 11:44:50
【问题描述】:

我了解您无法在 UILocalNotification 安排后对其进行修改。我的问题是我想设置 .repeatInterval 以便它每天在特定时间触发一次。但是我希望内容每天都在变化。因此,用户将警报设置为在上午 10 点触发,并且每天上午 10 点都会收到包含不同内容的警报,而无需重置警报。

我正在考虑在调用 didReceiveLocalNotification 时取消和重新安排,但这需要用户在下一个安排的警报之前启动应用程序。有没有办法在警报触发后立即调用方法?

【问题讨论】:

    标签: ios alert uilocalnotification


    【解决方案1】:

    很遗憾,除非您的应用在触发时位于最前面,否则您无法确定是否知道本地通知已触发。

    而且,正如您所说,您无法更改通知。

    所以我认为您最好的选择是不要使用重复通知。为每一天设置一个不同的单一通知,例如提前两周,每个通知都有不同的消息,并希望用户在此期间运行应用程序,以便您可以“刷新”队列,原来如此。也许只重复最后一个,以防万一,以便通知永远不会停止 - 但当然,每次消息都是相同的。但是你对此无能为力。您不能强制用户运行应用程序。

    【讨论】:

    • 谢谢马特,我想我可能不得不走那条路。如果是这样,但我认为最好的办法是将提醒设置为提前 2 周。然后每两周重复一次。这样至少如果他们不重新打开,他们可以回收 14 条消息,而不仅仅是重复 1 条。
    • 这是一个很好的折衷方案。所以当你的应用下次启动时,你可以环顾四周,看看它是什么日期和时间,看看你是否需要修改队列。
    • 有没有一种方法可以从我的应用委托中调用 Viewcontroller 中的方法(比如 didReceiveLocalNotification 或 didBecomeActive)?这样我可以在应用程序打开时更新警报,但我不确定如何从应用程序委托中的 VC 调用方法。
    • 当然可以,但您可能不需要。例如,有一个 applicationDidBecomeActive 通知。因此,只需在您的视图控制器中注册该通知即可,只要您的应用程序处于活动状态,就会调用它。但请确保这是一个永远存在的视图控制器!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多