- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
iOS 文档说 UNUserNotificationCenter
的 removeAllPendingNotificationRequests()
是异步的。
我想做的是:
调用 removeAllPendingNotificationRequests()
删除我所有的预定通知
安排一堆新通知,其中一些通知的 ID 可能与之前的相同,也可能不同
但是由于文档说该方法在另一个线程上异步运行(并且没有完成回调参数)我担心有时,根据线程和时间的变化无常等等,第 1 步仍然会因为我在第 2 步中创建内容,所以它也会终止我正在制作的一些新通知。
这种东西手动测试有点棘手,因为它取决于时间。所以我很好奇是否有人知道这是否是我应该担心的事情......
最佳答案
在添加通知的文档中我发现了这个:
Calling -addNotificationRequest: will replace an existing notification request with the same identifier.
也许解决方案是这样的:
let center = UNUserNotificationCenter.current()
// Create new requests
let newRequests: [UNNotificationRequest] = [...]
let identifiersForNew: [String] = newRequests.map { $0.identifier }
center.getPendingNotificationRequests { pendingRequests in
// Get all pending notification requests and filter only the ones that will not be replaced
let toDelete = pendingRequests.filter { !identifiersForNew.contains($0.identifier) }
let identifiersToDelete = toDelete.map { $0.identifier }
// Delete notifications that will not be replaced
center.removePendingNotificationRequests(withIdentifiers: identifiersToDelete)
// Add all new requests
for request in newRequests {
center.add(request, withCompletionHandler: nil)
}
}
关于ios - 我怎么知道 UNUserNotificationCenter 的 removeAllPendingNotificationRequests() 何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45268666/
按照文档的要求,如果它们在同一个线程上,则一个接一个地删除和添加具有匹配标识符的通知对我来说似乎工作正常。如果它们在不同的线程上,则新添加的通知将被上一行的 delete 调用删除。第一个案例保证有效
我正在尝试使用适用于 iOS 10 的 UserNotifications 框架。 如果我不传入触发器,通知似乎工作得很好。它们会立即出现在应用程序中。但我需要为触发器传递一个延迟。谁能看到我的代码中
我有一个用 Swift 编写的应用程序,它使用 UNUserNotificationCenter,当该应用程序位于前台时,它会显示通知。 我想做的是在通知已发送且应用程序位于前台后更新 UI 以下显示
我有一个 Xcode 项目,Xcode 8.1 (8B62),有两个目标,一个用于应用程序的付费版本,另一个用于免费版本。他们都管理远程推送通知。由于我使用新框架 UNUserNotification
我想在应用程序处于前台时显示推送通知的横幅。我实现了这个方法来显示通知: func userNotificationCenter(_ center: UNUserNotificationCenter,
运行下面的代码不会在屏幕右上角显示通知(作为横幅或警报)。通知显示在通知中心。 我确保我的系统上禁用了“请勿打扰”。我还尝试了系统偏好设置 -> 通知 -> 我的应用程序名称中的“横幅”和“警报”设置
我使用的是 MacOS Mojave,并且从使用现已弃用的 NSUserNotification 切换到 UNUserNotificationCenter。我的应用程序出现在系统偏好设置通知中,并选择
我刚刚对 iOs 10 和其他版本的通知进行了更改: if #available(iOS 10.0, *) { let center = UNUserNotificationCenter.cu
我现在如何调用本地通知?而不是在未来设定一个时间间隔?此代码将在未来 5 秒后显示通知。我希望现在就调用它。 let trigger = UNTimeIntervalNotificationTrigg
如果服务器向用户发送推送通知,但用户没有点击该通知,应用程序仍然可以确定有推送发送到手机并使用 UNUserNotificationCenter.getDeliveredNotifications()
有几篇文章解决了同样的问题,但(据我所见)它们都是 4 年前的,而且是在 Objective-C 中。我正在使用 Swift 4.2。 我正在制作一个倒计时应用程序。当应用程序在后台并且计时器到期时,
我正在使用 Apple 去年在 iOS 10 中宣布的一项功能。我的问题是通知中的图像有时是空的。 这是我的UNNotificationServiceExtension..我不确定我做错了什么。图像的
我正在使用 UNUserNotificationCenter.App 创建警报当应用程序处于后台或退出时效果很好但是,如果应用程序正在运行,则不会发出警报。 我听说应用程序运行时没有警报。是真的吗?
我在应用程序中使用本地通知时遇到问题。 我正在安排包含自定义内容和自定义操作类别的本地通知。它在 iOS 11 中进行调度和触发,但在 iOS 10 中没有。 根据文档,它应该也适用于 iOS 10。
当我发送推送通知时,应用程序在前台 willPresent 被调用。 didReceive 永远不会被调用。当应用程序在后台并收到推送通知时,会显示警报,但应用程序不会调用 didReceive 或
我正在尝试制作一个提醒应用,并且我所有的通知重复都设置为 true Example : var dateComponents = DateComponents() da
我正在安排本地通知。它适用于 iOS 9.x,但自 iOS 10 以来 -(void)application:(UIApplication *)application didReceiveLocalN
我的 AppDelagate 中有以下代码块: func userNotificationCenter(_ center: UNUserNotificationCenter,
我正在尝试检索仍显示在通知中心的所有已发送通知,但 UNUserNotificationCenter getDeliveredNotifications(completionHandler:) 不起作
我正在处理本地通知,但我遇到的问题是当应用程序终止时没有调用 didReceive Response 方法,所以当我点击通知操作时它只是启动应用程序而没有做任何其他事情。但是,当该应用程序仅在后台运行
我是一名优秀的程序员,十分优秀!