我正尝试使用下面的代码访问手机的联系人,但未提示用户允许我。
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))
}
}
答案 0 :(得分:1)
请详细说明确切的错误是什么?
我在iOS 9.2.1设备上尝试了你的代码,代码似乎工作正常。我获得了地址簿"访问权限#34;记录和联系人信息。
如果您遇到错误域= CNErrorDomain Code = 100" Access Denied&#34>,您应该在Setings-> Privacy-> Contacts中检查设备权限。错误。
以防万一,如果你点击了#34;不允许"在联系人访问权限提示上,现在由于首选项已保存而您没有收到提示,因此您可以更改您的包标识符以测试您的代码。
如果您需要重置所有隐私设置:https://stackoverflow.com/a/12596350/4209778