Swift CNContactRequestAccess 线程
Swift CNContactRequestAccess threading
我有获取authStatus的功能。但每当它是 .notDetermined -> 我发送请求访问以获得许可。
问题是 function returns bool 然后请求许可。我觉得线程的问题,我该如何处理?
class func AskForPermission() -> Bool {
var result = false
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
if success {
result = true
} else {
result = false
}
})
case .authorized:
result = true
default:
result = false
}
print(result)
return result
}
使用 Closer 而不是返回布尔值
'func AskForPermission(completionHandler:@escaping (_ autherizationStatus:Bool)->Void){
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
DispatchQueue.main.async {
if success {
completionHandler(true)
} else {
completionHandler(false)
}
}
})
case .authorized:
completionHandler(false)
break
default:
completionHandler(false)
break
}
}'
像这样调用这个函数
'AskForPermission(completionHandler: { (isAuthorized) in
if isAuthorized{
// Do your Work here....
}
})'
我有获取authStatus的功能。但每当它是 .notDetermined -> 我发送请求访问以获得许可。 问题是 function returns bool 然后请求许可。我觉得线程的问题,我该如何处理?
class func AskForPermission() -> Bool {
var result = false
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
if success {
result = true
} else {
result = false
}
})
case .authorized:
result = true
default:
result = false
}
print(result)
return result
}
使用 Closer 而不是返回布尔值
'func AskForPermission(completionHandler:@escaping (_ autherizationStatus:Bool)->Void){
let authStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authStatus{
case .notDetermined:
let contactStore = CNContactStore.init()
contactStore.requestAccess(for: .contacts, completionHandler: { (success, nil) in
DispatchQueue.main.async {
if success {
completionHandler(true)
} else {
completionHandler(false)
}
}
})
case .authorized:
completionHandler(false)
break
default:
completionHandler(false)
break
}
}'
像这样调用这个函数
'AskForPermission(completionHandler: { (isAuthorized) in
if isAuthorized{
// Do your Work here....
}
})'