如何在 swift 3 中获取通知授权状态?

Posted

技术标签:

【中文标题】如何在 swift 3 中获取通知授权状态?【英文标题】:How to get notification authorization status in swift 3? 【发布时间】:2017-09-27 21:47:20 【问题描述】:

如何在 ios 11 中查看 UNUserNotificationCenter 的当前授权状态?我一直在寻找一些代码,但它不在 swift 3 中,并且某些功能在 iOS 10 中已弃用。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

好的,我找到了:

let center = UNUserNotificationCenter.current()
center.getNotificationSettings  (settings) in
    if(settings.authorizationStatus == .authorized)
    
        print("Push authorized")
    
    else
    
        print("Push not authorized")
    

代码:Kuba

【讨论】:

【参考方案2】:

获取通知授权状态时,实际上可以处于三种状态,即

授权 拒绝 未确定

检查这些的直接方法是使用 switch-case,其中 .authorized.denied.nonDeterminedUNAuthorizationStatus 中的枚举

UNUserNotificationCenter.current().getNotificationSettings  (settings) in
    print("Checking notification status")

    switch settings.authorizationStatus 
    case .authorized:
        print("authorized")

    case .denied:
        print("denied")

    case .notDetermined:
        print("notDetermined")

    

UNAuthorizationStatus 的描述可以在 Apple 的文档https://developer.apple.com/documentation/usernotifications/unauthorizationstatus 中找到

【讨论】:

很高兴听到 :) 虽然在某些情况下区分授权、拒绝和未确定是非常相关的,而不仅仅是授权与否。例如。如果状态未授权,无论是未确定还是他们已经拒绝了请求,再次向用户请求授权都有很大的不同。当然,这取决于用例;)

以上是关于如何在 swift 3 中获取通知授权状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何在前台 iOS Swift 3.0 中接收推送通知?

如何监听通知授权状态的变化

在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?

如何从fireBase推送通知swift 4中获取数据

如何获取谷歌登录swift 4的OAuth2授权码

如何在 swift 4 上从 didFinishLaunchingWithOptions 获取通知中心数据