gpt4 book ai didi

iphone - iOS 如何取消预定的本地通知

转载 作者:行者123 更新时间:2023-11-28 20:43:39 28 4
gpt4 key购买 nike

我正在编写一个 iPhone 应用程序,其中有三个倒计时器,每个计时器都在用户启动时设置本地通知 (IBAction)。

我的问题是,如何在代码的其他地方引用现有的本地通知?我试过像这样直接引用它,但它崩溃了:

[[UIApplication sharedApplication] cancelLocalNotification:myNotification];

在安排通知并将其添加到用户默认设置后像这样:

In my scheduling method...
[myDefaults setObject:myNotification forKey:@"myNotification"];
...

And in my cancelling method...
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
[[UIApplication sharedApplication] cancelLocalNotification:[myDefaults objectForKey:@"myNotification"]];
[myDefaults synchronize];

我的应用程序崩溃并在上面的 cancelLocalNotification 行中出现 SIGABRT 错误。谁能告诉我哪里出错了?

提前致谢!

最佳答案

好的,在逐步思考之后,我找到了解决问题的有效方法。我发现我对整个问题的处理方式完全错误!

基本上,我发现当应用程序处于事件状态时(即在前台),您不需要任何本地通知。所以我没有在定时器启动时设置本地通知,而是在应用程序即将退出时设置相关通知。

我把这些观察者放在我的 viewDidLoad 中;

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appWillResign) name:UIApplicationWillResignActiveNotification
object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appIsActive) name:UIApplicationDidBecomeActiveNotification
object:nil];

在我的 appWillResign 方法中,我为任何事件计时器设置了通知。当应用程序恢复时,我只需取消所有通知。

[[UIApplication sharedApplication] cancelAllLocalNotifications];

简而言之,您不需要在代码的其他地方引用通知。您仅在绝对需要时才设置它们:当应用程序处于后台时!因此,您真的不需要将它们“存储”在任何地方供以后使用。

感谢您@Learner 的贡献,您帮助我走上了正确的轨道! :D

关于iphone - iOS 如何取消预定的本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350582/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com