繁体   English   中英

如何解除我的应用在后台时出现的UILocalNotifications?

[英]How can I dismiss UILocalNotifications that appear when my app is in the background?

我正在开发一款iPhone应用,需要提醒用户使用UILocalNotifications定期办理登机手续。 如果他们没有办理登机手续几个小时,可能会提醒他们几次,但我只是想显示最新的通知。

现在,如果应用程序处于打开状态,我会收到didReceiveLocalNotification :( UILocalNotification *)通知的回调,我可以跟踪是否有通知显示。

如果应用程序未运行且用户单击-action-按钮,则会收到回调

  • (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

所以我可以解雇任何旧的通知。 但是,如果他们单击“取消”,他们必须在一堆分层通知上单击“取消”,因为据我所知,我没有得到回调(如果应用程序未启动,我该怎么办)并且在创建UILocalNotification时,似乎没有标记或其他内容,以便从应用程序中自动关闭其他提醒。

如果应用程序在后台但正在运行,那就更糟了 - 首先,如果用户单击取消,我没有得到任何类型的回调,所以我遇到了同样的问题 - 用户必须单击取消很多次。 其次,如果他们单击动作,我会调用ApplicationDidBecomeActive,但是没有区别,当用户只是来回切换时; 我可以在这里解雇并重新安排它们,但它似乎并不完美,有时会在它们被解雇之前弹出一些。

有什么建议么? 如果有一种方法可以让通知自动过期,那也很棒。 我在网上看了一下,并没有找到太多的帮助,但这似乎是一个很大的疏忽,所以希望有一些方法来优雅地处理这个。

谢谢。

当您指出用户“取消”时,您将无法获得任何回调。

在您的情况下,是否可以只提醒用户一次? 仅一次安排一个通知,并在应用启动/恢复时续订。

我还没有尝试过以下内容,但我相信这可以解决您的问题。 使用CLLocationManagerstartMonitoringSignificantLocationChanges

每当设备的位置发生显着变化时,您的应用程序将在后台启动,并将选项传递给locationManager:didUpdateLocations:您可以从那里安排UILocalNotification

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM