如何检查设置iOS是否允许权限

时间:2018-11-26 13:15:43

标签: ios swift contacts-framework

我正在研究需要加载用户联系人的项目。为此,我需要联系信息。因此,我正在使用Contacts Framework。它易于使用,而且速度也非常快。我是iOS的新手,所以我只使用了获取联系人信息的代码段。

我做了什么:但是我有问题,那就是当用户安装应用程序并转到相应的ViewController时,ViewController会显示Dialog以获得权限。那里的用户可以拒绝和允许权限。当用户允许该权限但不能以其他方式运行时,我的应用程序运行良好。因此,我使用了一个功能来检查用户是否已向我的应用授予权限。

因此我读到,当用户未授予权限时,我们将无法执行任何操作。除了我们可以带他去允许他允许并取回应用程序的设置。这是我用来转到设置应用程序的代码。

    if let appSettings = URL(string: UIApplicationOpenSettingsURLString + Bundle.main.bundleIdentifier!) {
    if UIApplication.shared.canOpenURL(appSettings) {
      UIApplication.shared.open(appSettings)
    }
  }

问题:

  

现在我的问题很关键,也就是说我知道可以带用户   设置视图,现在,如果用户仍然不允许Permission和   只需回到我们的应用程序,在这种情况下,如何检查用户是否给出了   我们是否允许?

我是iOS的新手,很快,请通过示例向我提供帮助。我搜索了很多,但没有找到任何东西。在Android中,有回调函数,也可以使用onResume,但是在iOS中,我使用ViewWillAppear认为与onResume等效,但这种方法不起作用。

1 个答案:

答案 0 :(得分:0)

如果您有一个刷新按钮,则可以执行以下操作:

@IBAction func refreshButtonPressed(_ sender: UIButton) {
            ContactsService.sharedInstance.CNContactStore.requestAccess(to: .contacts, completion: { granted, error in
                if !granted {
                    //TODO: - Do something (e.g)
                    self.[method to display an access denied alert to the user]
                    return
                } else { 
                    [insert your code here]
            }
}

此外,正如另一位用户在对您的原始问题的答复中所指出的那样:Why does viewWillAppear not get called when an app comes back from the background?可能会让您感兴趣。您可能要在函数内调用ContactsService.sharedInstance.CNContactStore.requestAccess( .... { }块的内容,并将其挂钩到UIApplication.willEnterForegroundNotification

的侦听器中

https://developer.apple.com/documentation/contacts https://developer.apple.com/documentation/contacts/cncontactstore https://developer.apple.com/documentation/contacts/cncontactstore/1402873-requestaccess