我正在开发一款iPhone应用程序,需要提醒用户使用UILocalNotifications定期检查。如果他们没有办理登机手续几个小时,可能会提醒他们几次,但我只是想显示最新的通知。
现在,如果应用程序处于打开状态,我会收到didReceiveLocalNotification :( UILocalNotification *)通知的回调,我可以跟踪是否有通知显示。
如果应用程序未运行且用户单击-action-按钮,则会收到回调
所以我可以解雇任何旧通知。但是,如果他们单击“取消”,他们必须在一堆分层通知上单击“取消”,因为据我所知,我没有得到回调(如果应用程序未启动,我该怎么办)并且在创建UILocalNotification时,似乎没有标记或其他内容,以便从应用程序中自动关闭其他提醒。
如果应用程序在后台运行,那就更糟了 - 首先,如果用户单击取消,我没有得到任何回调,所以我遇到了同样的问题 - 用户必须单击取消一堆倍。其次,如果他们单击动作,我会调用ApplicationDidBecomeActive,但是没有区别,当用户只是来回切换时;我可以在这里解雇并重新安排它们,但它似乎并不完美,有时会在它们被解雇之前弹出一些。
有什么建议吗?如果有一种方法可以让通知自动过期,那也很棒。我在网上看了一下,并没有找到太多的帮助,但这似乎是一个很大的疏忽,所以希望有一些方法可以优雅地处理这个问题。
感谢。
答案 0 :(得分:1)
当用户按照您的指示“取消”时,您将无法获得任何回调。
在您的情况下,是否可以只提醒用户一次?只能一次安排一个通知,并在应用启动/恢复时续订。
答案 1 :(得分:0)
我还没有尝试过以下内容,但我相信这可以解决您的问题。使用CLLocationManager
的startMonitoringSignificantLocationChanges
每当设备的位置发生重大变化时,您的应用都会在后台启动,并且选项会传递到locationManager:didUpdateLocations:
,您可以从那里安排UILocalNotification
!