这是我到目前为止所做的:
private let contactStore = CNContactStore()
private func requestAccessForContacts() {
switch CNContactStore.authorizationStatusForEntityType(.Contacts) {
case .Denied, .NotDetermined:
contactStore.requestAccessForEntityType(.Contacts, completionHandler: { access, error in
if access {
print("super")
} else {
print("problem")
}
})
case .Authorized:
print("ok")
case .Restricted:
print("restricted")
}
}
problem
打印在控制台上,但屏幕上没有显示任何内容,也没有访问请求。为什么呢?
答案 0 :(得分:2)
您的代码有效;我能够通过首先拒绝访问联系并重新运行应用程序来复制问题。
一旦您禁止访问,后续运行应用程序将记录“问题”,而不显示任何请求窗口。
如果有人想在拒绝后再次看到此请求窗口,可以, 但是,去吧 “ 设置 ” - > “ 重置 ”并点击模拟器中的“ 重置位置和隐私 ”。
完成此操作后,下次运行应用程序时,会再次弹出一个请求窗口。