requestAccessForEntityType不提示用户

时间:2016-07-08 12:58:19

标签: ios iphone swift contacts

我正尝试使用下面的代码访问手机的联系人,但未提示用户允许我。

 let store = CNContactStore()
        store.requestAccessForEntityType(.Contacts) { granted, error in
            guard granted else {
                dispatch_async(dispatch_get_main_queue()) {
                    // user didn't grant authorization, so tell them to fix that in settings
                    print("error accessing adress book %@",error)
                }
                return
            }
            print("Access granted to adress book")
            // get the contacts

            var contacts = [CNContact]()
            let request = CNContactFetchRequest(keysToFetch: [CNContactIdentifierKey, CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName)])
            do {
                try store.enumerateContactsWithFetchRequest(request) { contact, stop in
                    contacts.append(contact)
                }
            } catch {
                print(error)
            }

            //TODO : Do something with the contacts
            let formatter = CNContactFormatter()
            formatter.style = .FullName
            for contact in contacts {
                print(formatter.stringFromContact(contact))
            }
        }

1 个答案:

答案 0 :(得分:1)

请详细说明确切的错误是什么?

我在iOS 9.2.1设备上尝试了你的代码,代码似乎工作正常。我获得了地址簿"访问权限#34;记录和联系人信息。

如果您遇到错误域= CNErrorDomain Code = 100" Access Denied&#34>,您应该在Setings-> Privacy-> Contacts中检查设备权限。错误。

以防万一,如果你点击了#34;不允许"在联系人访问权限提示上,现在由于首选项已保存而您没有收到提示,因此您可以更改您的包标识符以测试您的代码。

如果您需要重置所有隐私设置:https://stackoverflow.com/a/12596350/4209778