Macos Mac OS X 10.11的CNContact
在OS X 10.11和iOS 9.0中,Apple提供了此框架联系人: 我想从Mac访问联系人,但我无能为力,因为该应用程序无法访问联系人:Macos Mac OS X 10.11的CNContact,macos,swift,contacts,addressbook,Macos,Swift,Contacts,Addressbook,在OS X 10.11和iOS 9.0中,Apple提供了此框架联系人: 我想从Mac访问联系人,但我无能为力,因为该应用程序无法访问联系人: switch CNContactStore.authorizationStatusForEntityType(.Contacts) { case .Authorized: print("Authorized") NSUserDefaults.standardUserDefaults().setBool(true,
switch CNContactStore.authorizationStatusForEntityType(.Contacts) {
case .Authorized:
print("Authorized")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "contactsAllowed")
case .Denied:
print("Denied")
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "contactsAllowed")
case .NotDetermined:
print("Not Determined")
case .Restricted:
print("Restricted")
}
应用程序从不提示允许访问联系人,我也不能在系统首选项中选择它(它不会显示)
有人知道如何在Mac上访问它们吗(在iOS上运行良好)?任何对CNContactStore实例的调用都会触发请求。如果不尝试
[[CNContactStore alloc] init];
隐私权
用户可以授予或拒绝访问每个应用程序上的联系人数据
基础。对CNContactStore的任何调用都将在
正在要求用户授予或拒绝访问权限。请注意,用户是
仅在第一次请求访问时提示;任何后续的
CNContactStore呼叫使用现有权限。避免
您的应用程序的UI主线程块用于此访问,您可以使用
异步方法[CNContactStore]
requestAccessForEntityType:CNEntityTypeContacts completionHandler:]或
将您的CNContactStore使用情况发送到后台线程
你是在操场上试这个吗?这行不通 在项目中尝试此方法:
func getContactImage(name:String) -> NSImage?
{
let store = CNContactStore()
do
{
let contacts = try store.unifiedContactsMatchingPredicate(CNContact.predicateForContactsMatchingName(name), keysToFetch:[CNContactImageDataKey])
if contacts.count > 0
{
if let image = contact[0].imageData
{
return NSImage.init(data: image)
}
}
}
catch
{
}
return nil
}
不管怎样,你的问题引导我找到了获取联系人图像的方法,谢谢你 您是否尝试过
-requestAccessForEntityType:completionHandler:
?是的,什么都没有发生……我遇到了同样的问题,只是忘记了在权限文件中将com.apple.security.personal information.addressbook
键设置为true。嗨,没问题!;)我刚刚在10.11的新版本上试用了我的代码,现在可以使用了!所以这可能是测试版的问题。无论如何谢谢你的帮助!嗨,谢谢你的帮助!我刚刚在10.11的新版本上试用了我的代码,现在可以使用了!所以这可能是测试版的问题。问候语!