gpt4 book ai didi

ios - cancelLocalNotification 似乎不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:04:24 26 4
gpt4 key购买 nike

在下面的代码中,我检查当前任务(正在编辑的任务)是否有 localNotification。如果是这样,我会尝试取消该通知。然后(如果 fireDate 尚未过去)我用(可能)更改的信息更新通知的 alertBody 并重新安排它。

问题是,如果我创建一个通知然后对其进行编辑,我最终会关闭两个通知。不知何故原来的没有被取消...

if ([currentTask localNotification])
{
[[UIApplication sharedApplication] cancelLocalNotification:[currentTask localNotification]];
if ([[NSDate date] compare:[currentTask localNotification].fireDate] == NSOrderedAscending)
{
NSLog(@"current task name: %@", [currentTask name]);
NSString *temp = [NSString stringWithFormat:@"Alert:\n%@", [currentTask name]];
[[currentTask localNotification] setAlertBody:temp];
[[UIApplication sharedApplication] scheduleLocalNotification:[currentTask localNotification]];
}
else
[currentTask setLocalNotification:nil];
}

对这里的问题有什么见解吗?

我知道在安排通知时会生成一个副本 - cancelLocalNotification 如何找到正确的副本?它是通过测试属性是否相等来实现的吗?或者它是否复制指针地址并将其匹配?换句话说,如果其中一个属性发生变化,cancelLocalNotification 会不会匹配不到原来预定的通知?

最佳答案

我将在此处添加我对 iOS 9 的发现。以前我的代码是这样的:

UILocalNotification* notification = getNotification();
[[UIApplication sharedApplication] cancelLocalNotification: notification];
notification.alertBody = newBody;
[[UIApplication sharedApplication] scheduleLocalNotification: notification];

在 iOS 9 之前工作得很好,取消现有实例,然后使用新的 alertBody 或 soundName 重新安排它。然后是 iOS 9,突然运行这段代码实际上并没有取消之前的通知,所以我最终收到了比我想要的更多的通知!

我的解决方法是不要懒惰地重复使用旧通知,所以我现在创建一个新通知并用旧通知的字段填充它。效果很好!

编辑:我似乎仍然遇到 [[UIApplication sharedApplication] cancelLocalNotification: notification] 在其他情况下不起作用的问题......我的通知每分钟自动重复一次,它似乎 Xcode 7.0 中可能存在错误,这意味着它有时会被忽略:https://forums.developer.apple.com/thread/9226

编辑二:看起来像在针对 iOS 9 构建之前在应用程序中重复安排的本地通知无法取消..至少不容易...仍在努力寻找解决方案,因为我的应用程序围绕重复本地通知提醒!

编辑 III:在尝试取消应用程序后,我通过强制退出应用程序设法摆脱了挥之不去的、不可取消的通知……这似乎奏效了……这不是一个很好的解决方案,如果有某种替代方案,我当然不想让我的用户去做……我已经发布了 separate question看看是否有人有任何进一步的想法。

关于ios - cancelLocalNotification 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24659103/

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