我正在开发一个 iPhone 应用程序,该应用程序需要使用 UILocalNotifications 提醒用户定期签到。如果他们几个小时没有签到,他们可能会被提醒几次,但我只想显示最新的通知。
现在,如果应用程序打开,我会收到 didReceiveLocalNotification:(UILocalNotification *) 通知的回调,我可以跟踪是否有通知显示。
如果应用程序没有运行并且用户单击 -action- 按钮,我会收到一个回调
- (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
所以我可以关闭任何旧通知。但是,如果他们单击“取消”,则必须在一堆分层通知上单击“取消”,因为据我所知,我没有收到回调(如果应用程序未启动,我怎么能)并且在创建 UILocalNotification 以使来自应用程序的更新提醒自动关闭其他提醒时,似乎没有标志或其他东西。
如果应用程序在后台但正在运行,那就更糟了——首先,如果用户点击取消,我不会在那里得到任何类型的回调,所以我遇到了同样的问题——用户必须多次点击取消。其次,如果他们单击该操作,我会调用 ApplicationDidBecomeActive,但这与用户只是来回切换没有区别;我可以在这里解散并重新安排它们,但它似乎并不完美,有时会在它们被解散之前弹出一些。
有什么建议么?如果有办法让通知自动过期,那也很棒。我在网上看了一点,并没有找到太多帮助,但这似乎是一个很大的疏忽,所以希望有一些方法可以优雅地处理这个问题。
谢谢。