【问题标题】:How to check notification permissions on the main thread in swift?如何快速检查主线程的通知权限?
【发布时间】:2018-04-07 11:45:59
【问题描述】:

我的代码中有一个函数来检查我们是否可以拥有显示 UILocalNotification 的权限。

open func hasPermission() -> Bool {
    if let permissions = UIApplication.shared.currentUserNotificationSettings {
        if permissions.types.contains(.alert) {
            return true
        }
    }
    return false
}

此代码在 Xcode 9 中触发了警告:

从后台线程调用的 UI API: UIApplication.currentUserNotificationSettings 必须从 main 使用 仅线程

我该如何解决这个问题?我知道有DispatchQueue.main.async 方法,只是不知道如何实现。

【问题讨论】:

    标签: swift multithreading xcode9


    【解决方案1】:

    你可以这样做。

    DispatchQueue.main.async {
        if hasPermission() {
            //
        }
    }
    

    【讨论】:

    • 这是后台工作的一部分,所以我宁愿在主线程上做的越少越好。这个特殊的检查是作为一个守卫 hasPermission() else {
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多