计算待处理的本地通知

Posted

技术标签:

【中文标题】计算待处理的本地通知【英文标题】:Count pending local notifications 【发布时间】:2017-07-18 20:03:03 【问题描述】:

我正在尝试编写一个函数来检查我是否已达到 64 个本地通知的限制。有一些解决 UIlocalNotifications 的答案,但我还没有找到 NSlocalNotifications 的答案。这是我的功能

     func notificationLimitreached()  
    let center = UNUserNotificationCenter.current()
    var limit = false
    center.getPendingNotificationRequests(completionHandler:  requests in
        print(requests.count)
        if requests.count > 59 
            limit = true
            print(limit)
         else 
            limit = false
        

    )
    print (limit)

问题是“limit”变量在闭包内打印 true,然后在离开闭包后重置为 false 的初始值。

我尝试过的其他方法。

-- 在我读取此值时再次在闭包内设置全局变量,否则将其设置为原始值

【问题讨论】:

【参考方案1】:

如您所见,您正面临异步逻辑:

由于 getPendingNotificationRequests 闭包中有延迟,因此您的函数首先打印 false。

试试这个功能,看看是否有效:

func isNotificationLimitreached(completed: @escaping (Bool)-> Void = _ in ) 
    let center = UNUserNotificationCenter.current()
    center.getPendingNotificationRequests(completionHandler:  requests in

        completed(requests.count > 59)
    )

您可以使用以下代码调用此函数:

    isNotificationLimitreached  isReached in
        print(isReached)
    

【讨论】:

以上是关于计算待处理的本地通知的主要内容,如果未能解决你的问题,请参考以下文章

Swift:从手表取消本地通知(安排在手机上)

静默本地通知 IOS

应用程序关闭时的本地通知处理

演示前取消通知

正确处理启动选项和本地通知

在 iOS 10 中安排和处理本地通知